CalcDumpKey.smali

.class public Lcom/cleanmaster/hpsharelib/crash/CalcDumpKey;
.super Ljava/lang/Object;
.source "CalcDumpKey.java"


# direct methods
.method public constructor <init>()V
    .registers 1

    .prologue
    .line 7
    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

.method private static IngoreNonImportantMsg(Ljava/lang/String;)Ljava/lang/String;
    .registers 5

    .prologue
    const/4 v3, -0x1

    .line 11
    .line 14
    const-string/jumbo v0, "{"

    invoke-virtual {p0, v0}, Ljava/lang/String;->indexOf(Ljava/lang/String;)I

    move-result v1

    .line 15
    const-string/jumbo v0, "}"

    invoke-virtual {p0, v0}, Ljava/lang/String;->indexOf(Ljava/lang/String;)I

    move-result v0

    .line 16
    if-eq v1, v3, :cond_2d

    if-eq v0, v3, :cond_2d

    .line 17
    add-int/lit8 v0, v0, 0x1

    .line 18
    invoke-virtual {p0}, Ljava/lang/String;->length()I

    move-result v2

    if-le v0, v2, :cond_1f

    .line 19
    invoke-virtual {p0}, Ljava/lang/String;->length()I

    move-result v0

    .line 21
    :cond_1f
    invoke-virtual {p0, v1, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String;

    move-result-object v0

    .line 22
    const-string v1, " -ADDR- "

    invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;

    move-result-object v0

    .line 23
    invoke-virtual {v0}, Ljava/lang/String;->trim()Ljava/lang/String;

    move-result-object p0

    .line 27
    :cond_2d
    const-string v0, "@"

    invoke-virtual {p0, v0}, Ljava/lang/String;->indexOf(Ljava/lang/String;)I

    move-result v1

    .line 28
    if-eq v1, v3, :cond_4f

    .line 29
    add-int/lit8 v0, v1, 0x9

    .line 30
    invoke-virtual {p0}, Ljava/lang/String;->length()I

    move-result v2

    if-le v0, v2, :cond_41

    .line 31
    invoke-virtual {p0}, Ljava/lang/String;->length()I

    move-result v0

    .line 33
    :cond_41
    invoke-virtual {p0, v1, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String;

    move-result-object v0

    .line 34
    const-string v1, " -ADDR- "

    invoke-virtual {p0, v0, v1}, Ljava/lang/String;->replace(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/lang/String;

    move-result-object v0

    .line 35
    invoke-virtual {v0}, Ljava/lang/String;->trim()Ljava/lang/String;

    move-result-object p0

    .line 39
    :cond_4f
    const-string v0, "("

    invoke-virtual {p0, v0}, Ljava/lang/String;->indexOf(Ljava/lang/String;)I

    move-result v0

    .line 40
    if-eq v0, v3, :cond_68

    .line 41
    const-string v0, ":"

    invoke-virtual {p0, v0}, Ljava/lang/String;->lastIndexOf(Ljava/lang/String;)I

    move-result v0

    .line 42
    if-eq v0, v3, :cond_68

    .line 43
    const/4 v1, 0x0

    invoke-virtual {p0, v1, v0}, Ljava/lang/String;->substring(II)Ljava/lang/String;

    move-result-object v0

    .line 44
    invoke-virtual {v0}, Ljava/lang/String;->trim()Ljava/lang/String;

    move-result-object p0

    .line 48
    :cond_68
    return-object p0
.end method

.method public static getDumpKey2(Ljava/lang/Throwable;)Ljava/lang/String;
    .registers 11

    .prologue
    const/4 v1, 0x0

    .line 64
    .line 65
    invoke-static {p0}, Lcom/cleanmaster/hpsharelib/crash/CalcDumpKey;->getLastStackElement(Ljava/lang/Throwable;)[Ljava/lang/StackTraceElement;

    move-result-object v0

    .line 67
    if-nez p0, :cond_c

    if-nez v0, :cond_c

    .line 68
    const-string v0, "1001"

    .line 136
    :goto_b
    return-object v0

    .line 70
    :cond_c
    if-eqz v0, :cond_11

    array-length v2, v0

    if-nez v2, :cond_1e

    .line 71
    :cond_11
    invoke-virtual {p0}, Ljava/lang/Throwable;->getStackTrace()[Ljava/lang/StackTraceElement;

    move-result-object v0

    move-object v5, v0

    .line 76
    :goto_16
    if-eqz v5, :cond_1b

    array-length v0, v5

    if-nez v0, :cond_20

    .line 77
    :cond_1b
    const-string v0, "1002"

    goto :goto_b

    :cond_1e
    move-object v5, v0

    .line 73
    goto :goto_16

    .line 79
    :cond_20
    const/4 v0, 0x0

    .line 80
    invoke-virtual {p0}, Ljava/lang/Throwable;->toString()Ljava/lang/String;

    move-result-object v2

    invoke-static {v2}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v2

    if-nez v2, :cond_40

    .line 81
    invoke-virtual {p0}, Ljava/lang/Throwable;->toString()Ljava/lang/String;

    move-result-object v2

    const-string v3, ":"

    invoke-virtual {v2, v3}, Ljava/lang/String;->indexOf(Ljava/lang/String;)I

    move-result v2

    .line 82
    const/4 v3, -0x1

    if-eq v2, v3, :cond_40

    .line 83
    invoke-virtual {p0}, Ljava/lang/Throwable;->toString()Ljava/lang/String;

    move-result-object v0

    invoke-virtual {v0, v1, v2}, Ljava/lang/String;->substring(II)Ljava/lang/String;

    move-result-object v0

    .line 86
    :cond_40
    const-string v2, ""

    .line 87
    const-string v3, ""

    .line 91
    array-length v6, v5

    move v4, v1

    :goto_46
    if-ge v4, v6, :cond_e5

    aget-object v7, v5, v4

    .line 92
    invoke-virtual {v7}, Ljava/lang/StackTraceElement;->toString()Ljava/lang/String;

    move-result-object v8

    invoke-static {v8}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v8

    if-eqz v8, :cond_57

    .line 91
    :cond_54
    :goto_54
    add-int/lit8 v4, v4, 0x1

    goto :goto_46

    .line 95
    :cond_57
    invoke-virtual {v7}, Ljava/lang/StackTraceElement;->toString()Ljava/lang/String;

    move-result-object v8

    const-string v9, "android.os.Parcel"

    invoke-virtual {v8, v9}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v8

    if-nez v8, :cond_54

    .line 98
    invoke-virtual {v7}, Ljava/lang/StackTraceElement;->toString()Ljava/lang/String;

    move-result-object v8

    const-string v9, "AsyncTaskEx.java"

    invoke-virtual {v8, v9}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v8

    if-nez v8, :cond_54

    .line 102
    invoke-virtual {v7}, Ljava/lang/StackTraceElement;->toString()Ljava/lang/String;

    move-result-object v8

    .line 103
    const-string v9, "com.cleanmaster."

    invoke-virtual {v8, v9}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v9

    if-nez v9, :cond_93

    const-string v9, "com.keniu."

    .line 104
    invoke-virtual {v8, v9}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v9

    if-nez v9, :cond_93

    const-string v9, "com.ijinshan."

    .line 105
    invoke-virtual {v8, v9}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v9

    if-nez v9, :cond_93

    const-string v9, "ks.cm."

    .line 106
    invoke-virtual {v8, v9}, Ljava/lang/String;->contains(Ljava/lang/CharSequence;)Z

    move-result v8

    if-eqz v8, :cond_d7

    .line 107
    :cond_93
    invoke-virtual {v7}, Ljava/lang/StackTraceElement;->toString()Ljava/lang/String;

    move-result-object v1

    .line 121
    :goto_97
    const-string v3, ""

    .line 122
    invoke-static {v1}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v3

    if-nez v3, :cond_e0

    .line 123
    invoke-static {v1}, Lcom/cleanmaster/hpsharelib/crash/CalcDumpKey;->IngoreNonImportantMsg(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v1

    .line 127
    :goto_a3
    invoke-static {v0}, Landroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z

    move-result v2

    if-nez v2, :cond_c1

    .line 128
    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;

    move-result-object v1

    const-string/jumbo v2, "|"

    invoke-virtual {v1, v2}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v1

    invoke-virtual {v1, v0}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;

    move-result-object v0

    invoke-virtual {v0}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;

    move-result-object v1

    .line 131
    :cond_c1
    new-instance v0, Ljava/util/zip/CRC32;

    invoke-direct {v0}, Ljava/util/zip/CRC32;-><init>()V

    .line 132
    invoke-virtual {v1}, Ljava/lang/String;->getBytes()[B

    move-result-object v1

    invoke-virtual {v0, v1}, Ljava/util/zip/CRC32;->update([B)V

    .line 134
    invoke-virtual {v0}, Ljava/util/zip/CRC32;->getValue()J

    move-result-wide v0

    .line 136
    invoke-static {v0, v1}, Ljava/lang/Long;->toString(J)Ljava/lang/String;

    move-result-object v0

    goto/16 :goto_b

    .line 114
    :cond_d7
    if-nez v1, :cond_54

    .line 115
    invoke-virtual {v7}, Ljava/lang/StackTraceElement;->toString()Ljava/lang/String;

    move-result-object v2

    .line 116
    const/4 v1, 0x1

    goto/16 :goto_54

    .line 125
    :cond_e0
    invoke-static {v2}, Lcom/cleanmaster/hpsharelib/crash/CalcDumpKey;->IngoreNonImportantMsg(Ljava/lang/String;)Ljava/lang/String;

    move-result-object v1

    goto :goto_a3

    :cond_e5
    move-object v1, v3

    goto :goto_97
.end method

.method private static getLastStackElement(Ljava/lang/Throwable;)[Ljava/lang/StackTraceElement;
    .registers 2

    .prologue
    .line 53
    const/4 v0, 0x0

    .line 54
    :goto_1
    if-eqz p0, :cond_c

    .line 56
    invoke-virtual {p0}, Ljava/lang/Throwable;->getStackTrace()[Ljava/lang/StackTraceElement;

    move-result-object v0

    .line 57
    invoke-virtual {p0}, Ljava/lang/Throwable;->getCause()Ljava/lang/Throwable;

    move-result-object p0

    goto :goto_1

    .line 59
    :cond_c
    return-object v0
.end method