m.smali

.class public final Lxcrash/m;
.super Ljava/lang/Object;
.source "SourceFile"


# annotations
.annotation system Ldalvik/annotation/MemberClasses;
    value = {
        Lxcrash/m$a;
    }
.end annotation


# static fields
.field private static a:Z = false

.field private static b:Ljava/lang/String;

.field private static c:Ljava/lang/String;

.field private static d:Ljava/lang/String;

.field private static e:Lxcrash/h;


# direct methods
.method static constructor <clinit>()V
    .registers 1

    .line 40
    new-instance v0, Lxcrash/c;

    invoke-direct {v0}, Lxcrash/c;-><init>()V

    sput-object v0, Lxcrash/m;->e:Lxcrash/h;

    return-void
.end method

.method public static declared-synchronized a(Landroid/content/Context;Lxcrash/m$a;)I
    .registers 37

    move-object/from16 v1, p1

    const-class v2, Lxcrash/m;

    monitor-enter v2

    .line 73
    :try_start_5
    sget-boolean v0, Lxcrash/m;->a:Z
    :try_end_7
    .catchall {:try_start_5 .. :try_end_7} :catchall_262

    const/4 v3, 0x0

    if-eqz v0, :cond_c

    .line 74
    monitor-exit v2

    return v3

    :cond_c
    const/4 v4, 0x1

    .line 76
    :try_start_d
    sput-boolean v4, Lxcrash/m;->a:Z
    :try_end_f
    .catchall {:try_start_d .. :try_end_f} :catchall_262

    if-nez p0, :cond_14

    const/4 v0, -0x1

    .line 79
    monitor-exit v2

    return v0

    .line 83
    :cond_14
    :try_start_14
    invoke-virtual/range {p0 .. p0}, Landroid/content/Context;->getApplicationContext()Landroid/content/Context;

    move-result-object v0

    if-eqz v0, :cond_1c

    move-object v6, v0

    goto :goto_1e

    :cond_1c
    move-object/from16 v6, p0

    .line 94
    :goto_1e
    iget-object v0, v1, Lxcrash/m$a;->d:Lxcrash/h;

    if-eqz v0, :cond_26

    .line 95
    iget-object v0, v1, Lxcrash/m$a;->d:Lxcrash/h;

    sput-object v0, Lxcrash/m;->e:Lxcrash/h;

    .line 99
    :cond_26
    invoke-virtual {v6}, Landroid/content/Context;->getPackageName()Ljava/lang/String;

    move-result-object v0

    .line 101
    sput-object v0, Lxcrash/m;->b:Ljava/lang/String;

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

    move-result v0

    if-eqz v0, :cond_36

    const-string v0, "unknown"

    .line 102
    sput-object v0, Lxcrash/m;->b:Ljava/lang/String;

    .line 106
    :cond_36
    iget-object v0, v1, Lxcrash/m$a;->a:Ljava/lang/String;

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

    move-result v0

    if-eqz v0, :cond_44

    .line 107
    invoke-static {v6}, Lxcrash/l;->a(Landroid/content/Context;)Ljava/lang/String;

    move-result-object v0

    iput-object v0, v1, Lxcrash/m$a;->a:Ljava/lang/String;

    .line 109
    :cond_44
    iget-object v0, v1, Lxcrash/m$a;->a:Ljava/lang/String;

    sput-object v0, Lxcrash/m;->c:Ljava/lang/String;

    .line 112
    iget-object v0, v1, Lxcrash/m$a;->b:Ljava/lang/String;

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

    move-result v0

    if-eqz v0, :cond_67

    .line 113
    new-instance v0, Ljava/lang/StringBuilder;

    invoke-direct {v0}, Ljava/lang/StringBuilder;-><init>()V

    invoke-virtual {v6}, Landroid/content/Context;->getFilesDir()Ljava/io/File;

    move-result-object v5

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

    const-string v5, "/tombstones"

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

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

    move-result-object v0

    iput-object v0, v1, Lxcrash/m$a;->b:Ljava/lang/String;

    .line 115
    :cond_67
    iget-object v0, v1, Lxcrash/m$a;->b:Ljava/lang/String;

    sput-object v0, Lxcrash/m;->d:Ljava/lang/String;

    .line 118
    invoke-static {}, Landroid/os/Process;->myPid()I

    move-result v5

    .line 120
    iget-boolean v0, v1, Lxcrash/m$a;->h:Z

    if-nez v0, :cond_7a

    iget-boolean v0, v1, Lxcrash/m$a;->H:Z

    if-eqz v0, :cond_78

    goto :goto_7a

    :cond_78
    const/4 v8, 0x0

    goto :goto_7f

    .line 121
    :cond_7a
    :goto_7a
    invoke-static {v6, v5}, Lxcrash/l;->a(Landroid/content/Context;I)Ljava/lang/String;

    move-result-object v0

    move-object v8, v0

    .line 125
    :goto_7f
    invoke-static {}, Lxcrash/e;->a()Lxcrash/e;

    move-result-object v9

    iget-object v10, v1, Lxcrash/m$a;->b:Ljava/lang/String;

    iget v11, v1, Lxcrash/m$a;->j:I

    iget v12, v1, Lxcrash/m$a;->v:I

    iget v13, v1, Lxcrash/m$a;->K:I

    iget v14, v1, Lxcrash/m$a;->f:I

    iget v15, v1, Lxcrash/m$a;->g:I

    iget v0, v1, Lxcrash/m$a;->c:I

    move/from16 v16, v0

    invoke-virtual/range {v9 .. v16}, Lxcrash/e;->a(Ljava/lang/String;IIIIII)V

    .line 134
    iget-boolean v0, v1, Lxcrash/m$a;->h:Z

    if-nez v0, :cond_a2

    iget-boolean v0, v1, Lxcrash/m$a;->t:Z

    if-nez v0, :cond_a2

    iget-boolean v0, v1, Lxcrash/m$a;->H:Z

    if-eqz v0, :cond_bc

    .line 135
    :cond_a2
    instance-of v0, v6, Landroid/app/Application;

    if-eqz v0, :cond_bc

    .line 136
    invoke-static {}, Lxcrash/a;->a()Lxcrash/a;

    move-result-object v0

    move-object v9, v6

    check-cast v9, Landroid/app/Application;

    .line 1048
    new-instance v10, Ljava/util/LinkedList;

    invoke-direct {v10}, Ljava/util/LinkedList;-><init>()V

    iput-object v10, v0, Lxcrash/a;->a:Ljava/util/LinkedList;

    .line 1050
    new-instance v10, Lxcrash/a$1;

    invoke-direct {v10, v0}, Lxcrash/a$1;-><init>(Lxcrash/a;)V

    invoke-virtual {v9, v10}, Landroid/app/Application;->registerActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V

    .line 141
    :cond_bc
    iget-boolean v0, v1, Lxcrash/m$a;->h:Z

    if-eqz v0, :cond_12d

    .line 142
    invoke-static {}, Lxcrash/i;->a()Lxcrash/i;

    move-result-object v0

    sget-object v9, Lxcrash/m;->b:Ljava/lang/String;

    iget-object v10, v1, Lxcrash/m$a;->a:Ljava/lang/String;

    iget-object v11, v1, Lxcrash/m$a;->b:Ljava/lang/String;

    iget-boolean v12, v1, Lxcrash/m$a;->i:Z

    iget v13, v1, Lxcrash/m$a;->k:I

    iget v14, v1, Lxcrash/m$a;->l:I

    iget v15, v1, Lxcrash/m$a;->m:I

    iget-boolean v3, v1, Lxcrash/m$a;->n:Z

    iget-boolean v4, v1, Lxcrash/m$a;->o:Z

    iget-boolean v7, v1, Lxcrash/m$a;->p:Z

    move-object/from16 v18, v6

    iget v6, v1, Lxcrash/m$a;->q:I

    move/from16 v19, v6

    iget-object v6, v1, Lxcrash/m$a;->r:[Ljava/lang/String;

    move-object/from16 v20, v6

    iget-object v6, v1, Lxcrash/m$a;->s:Lxcrash/f;

    .line 2075
    iput v5, v0, Lxcrash/i;->a:I

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

    move-result v21

    if-eqz v21, :cond_f5

    const-string v21, "unknown"

    move-object/from16 v34, v21

    move-object/from16 v21, v8

    move-object/from16 v8, v34

    goto :goto_f7

    :cond_f5
    move-object/from16 v21, v8

    :goto_f7
    iput-object v8, v0, Lxcrash/i;->b:Ljava/lang/String;

    .line 2077
    iput-object v9, v0, Lxcrash/i;->c:Ljava/lang/String;

    .line 2078
    iput-object v10, v0, Lxcrash/i;->d:Ljava/lang/String;

    .line 2079
    iput-boolean v12, v0, Lxcrash/i;->e:Z

    .line 2080
    iput-object v11, v0, Lxcrash/i;->f:Ljava/lang/String;

    .line 2081
    iput v13, v0, Lxcrash/i;->g:I

    .line 2082
    iput v14, v0, Lxcrash/i;->h:I

    .line 2083
    iput v15, v0, Lxcrash/i;->i:I

    .line 2084
    iput-boolean v3, v0, Lxcrash/i;->j:Z

    .line 2085
    iput-boolean v4, v0, Lxcrash/i;->k:Z

    .line 2086
    iput-boolean v7, v0, Lxcrash/i;->l:Z

    move/from16 v3, v19

    .line 2087
    iput v3, v0, Lxcrash/i;->m:I

    move-object/from16 v3, v20

    .line 2088
    iput-object v3, v0, Lxcrash/i;->n:[Ljava/lang/String;

    .line 2089
    iput-object v6, v0, Lxcrash/i;->o:Lxcrash/f;

    .line 2090
    invoke-static {}, Ljava/lang/Thread;->getDefaultUncaughtExceptionHandler()Ljava/lang/Thread$UncaughtExceptionHandler;

    move-result-object v3

    iput-object v3, v0, Lxcrash/i;->p:Ljava/lang/Thread$UncaughtExceptionHandler;
    :try_end_11d
    .catchall {:try_start_14 .. :try_end_11d} :catchall_262

    .line 2093
    :try_start_11d
    invoke-static {v0}, Ljava/lang/Thread;->setDefaultUncaughtExceptionHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V
    :try_end_120
    .catch Ljava/lang/Exception; {:try_start_11d .. :try_end_120} :catch_121
    .catchall {:try_start_11d .. :try_end_120} :catchall_262

    goto :goto_131

    :catch_121
    move-exception v0

    move-object v3, v0

    .line 2876
    :try_start_123
    sget-object v0, Lxcrash/m;->e:Lxcrash/h;

    const-string v4, "xcrash"

    const-string v6, "JavaCrashHandler setDefaultUncaughtExceptionHandler failed"

    .line 2095
    invoke-interface {v0, v4, v6, v3}, Lxcrash/h;->c(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    goto :goto_131

    :cond_12d
    move-object/from16 v18, v6

    move-object/from16 v21, v8

    .line 161
    :goto_131
    iget-boolean v0, v1, Lxcrash/m$a;->H:Z

    const/16 v3, 0x15

    if-eqz v0, :cond_19b

    sget v0, Landroid/os/Build$VERSION;->SDK_INT:I

    if-ge v0, v3, :cond_19b

    .line 162
    invoke-static {}, Lxcrash/b;->a()Lxcrash/b;

    move-result-object v4

    sget-object v0, Lxcrash/m;->b:Ljava/lang/String;

    iget-object v6, v1, Lxcrash/m$a;->a:Ljava/lang/String;

    iget-object v7, v1, Lxcrash/m$a;->b:Ljava/lang/String;

    iget-boolean v8, v1, Lxcrash/m$a;->J:Z

    iget v9, v1, Lxcrash/m$a;->L:I

    iget v10, v1, Lxcrash/m$a;->M:I

    iget v11, v1, Lxcrash/m$a;->N:I

    iget-boolean v12, v1, Lxcrash/m$a;->O:Z

    iget-boolean v13, v1, Lxcrash/m$a;->P:Z

    iget-object v14, v1, Lxcrash/m$a;->R:Lxcrash/f;

    .line 3081
    sget v15, Landroid/os/Build$VERSION;->SDK_INT:I

    if-ge v15, v3, :cond_19b

    move-object/from16 v15, v18

    .line 3085
    iput-object v15, v4, Lxcrash/b;->a:Landroid/content/Context;

    .line 3086
    iput v5, v4, Lxcrash/b;->b:I

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

    move-result v5

    if-eqz v5, :cond_166

    const-string v5, "unknown"

    goto :goto_168

    :cond_166
    move-object/from16 v5, v21

    :goto_168
    iput-object v5, v4, Lxcrash/b;->c:Ljava/lang/String;

    .line 3088
    iput-object v0, v4, Lxcrash/b;->d:Ljava/lang/String;

    .line 3089
    iput-object v6, v4, Lxcrash/b;->e:Ljava/lang/String;

    .line 3090
    iput-object v7, v4, Lxcrash/b;->f:Ljava/lang/String;

    .line 3091
    iput-boolean v8, v4, Lxcrash/b;->g:Z

    .line 3092
    iput v9, v4, Lxcrash/b;->h:I

    .line 3093
    iput v10, v4, Lxcrash/b;->i:I

    .line 3094
    iput v11, v4, Lxcrash/b;->j:I

    .line 3095
    iput-boolean v12, v4, Lxcrash/b;->k:Z

    .line 3096
    iput-boolean v13, v4, Lxcrash/b;->l:Z

    .line 3097
    iput-object v14, v4, Lxcrash/b;->m:Lxcrash/f;

    .line 3099
    new-instance v0, Lxcrash/b$1;

    const-string v5, "/data/anr/"

    invoke-direct {v0, v4, v5}, Lxcrash/b$1;-><init>(Lxcrash/b;Ljava/lang/String;)V

    iput-object v0, v4, Lxcrash/b;->n:Landroid/os/FileObserver;
    :try_end_187
    .catchall {:try_start_123 .. :try_end_187} :catchall_262

    .line 3115
    :try_start_187
    iget-object v0, v4, Lxcrash/b;->n:Landroid/os/FileObserver;

    invoke-virtual {v0}, Landroid/os/FileObserver;->startWatching()V
    :try_end_18c
    .catch Ljava/lang/Exception; {:try_start_187 .. :try_end_18c} :catch_18d
    .catchall {:try_start_187 .. :try_end_18c} :catchall_262

    goto :goto_19d

    :catch_18d
    move-exception v0

    const/4 v5, 0x0

    .line 3117
    :try_start_18f
    iput-object v5, v4, Lxcrash/b;->n:Landroid/os/FileObserver;

    .line 3876
    sget-object v4, Lxcrash/m;->e:Lxcrash/h;

    const-string v5, "xcrash"

    const-string v6, "AnrHandler fileObserver startWatching failed"

    .line 3118
    invoke-interface {v4, v5, v6, v0}, Lxcrash/h;->c(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V

    goto :goto_19d

    :cond_19b
    move-object/from16 v15, v18

    .line 180
    :goto_19d
    iget-boolean v0, v1, Lxcrash/m$a;->t:Z

    if-nez v0, :cond_1ad

    iget-boolean v0, v1, Lxcrash/m$a;->H:Z

    if-eqz v0, :cond_1aa

    sget v0, Landroid/os/Build$VERSION;->SDK_INT:I

    if-lt v0, v3, :cond_1aa

    goto :goto_1ad

    :cond_1aa
    const/4 v3, 0x0

    goto/16 :goto_224

    .line 181
    :cond_1ad
    :goto_1ad
    invoke-static {}, Lxcrash/NativeHandler;->getInstance()Lxcrash/NativeHandler;

    move-result-object v5

    iget-object v7, v1, Lxcrash/m$a;->e:Lxcrash/g;

    sget-object v8, Lxcrash/m;->b:Ljava/lang/String;

    iget-object v9, v1, Lxcrash/m$a;->a:Ljava/lang/String;

    iget-object v10, v1, Lxcrash/m$a;->b:Ljava/lang/String;

    iget-boolean v11, v1, Lxcrash/m$a;->t:Z

    iget-boolean v12, v1, Lxcrash/m$a;->u:Z

    iget v13, v1, Lxcrash/m$a;->w:I

    iget v14, v1, Lxcrash/m$a;->x:I

    iget v0, v1, Lxcrash/m$a;->y:I

    iget-boolean v4, v1, Lxcrash/m$a;->z:Z

    iget-boolean v6, v1, Lxcrash/m$a;->A:Z

    iget-boolean v3, v1, Lxcrash/m$a;->B:Z

    move/from16 v18, v3

    iget-boolean v3, v1, Lxcrash/m$a;->C:Z

    move/from16 v19, v3

    iget-boolean v3, v1, Lxcrash/m$a;->D:Z

    move/from16 v20, v3

    iget v3, v1, Lxcrash/m$a;->E:I

    move/from16 v21, v3

    iget-object v3, v1, Lxcrash/m$a;->F:[Ljava/lang/String;

    move-object/from16 v22, v3

    iget-object v3, v1, Lxcrash/m$a;->G:Lxcrash/f;

    move/from16 v23, v6

    iget-boolean v6, v1, Lxcrash/m$a;->H:Z

    if-eqz v6, :cond_1ed

    sget v6, Landroid/os/Build$VERSION;->SDK_INT:I

    move-object/from16 v24, v3

    const/16 v3, 0x15

    if-lt v6, v3, :cond_1ef

    const/4 v3, 0x1

    goto :goto_1f0

    :cond_1ed
    move-object/from16 v24, v3

    :cond_1ef
    const/4 v3, 0x0

    :goto_1f0
    iget-boolean v6, v1, Lxcrash/m$a;->I:Z

    move/from16 p0, v3

    iget-boolean v3, v1, Lxcrash/m$a;->J:Z

    move/from16 v26, v3

    iget v3, v1, Lxcrash/m$a;->L:I

    move/from16 v27, v3

    iget v3, v1, Lxcrash/m$a;->M:I

    move/from16 v28, v3

    iget v3, v1, Lxcrash/m$a;->N:I

    move/from16 v29, v3

    iget-boolean v3, v1, Lxcrash/m$a;->O:Z

    move/from16 v30, v3

    iget-boolean v3, v1, Lxcrash/m$a;->P:Z

    move/from16 v31, v3

    iget-object v3, v1, Lxcrash/m$a;->R:Lxcrash/f;

    iget-boolean v1, v1, Lxcrash/m$a;->Q:Z

    move/from16 v25, v6

    move/from16 v17, v23

    move-object v6, v15

    move v15, v0

    move/from16 v16, v4

    move-object/from16 v23, v24

    move/from16 v24, p0

    move-object/from16 v32, v3

    move/from16 v33, v1

    invoke-virtual/range {v5 .. v33}, Lxcrash/NativeHandler;->initialize(Landroid/content/Context;Lxcrash/g;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZIIIZZZZZI[Ljava/lang/String;Lxcrash/f;ZZZIIIZZLxcrash/f;Z)I

    move-result v3

    .line 213
    :goto_224
    invoke-static {}, Lxcrash/e;->a()Lxcrash/e;

    move-result-object v0

    .line 4142
    iget-object v1, v0, Lxcrash/e;->a:Ljava/lang/String;

    if-eqz v1, :cond_260

    iget v1, v0, Lxcrash/e;->b:I
    :try_end_22e
    .catchall {:try_start_18f .. :try_end_22e} :catchall_262

    if-gez v1, :cond_231

    goto :goto_260

    :cond_231
    :try_start_231
    const-string v1, "xcrash_file_mgr"

    .line 4148
    iget v4, v0, Lxcrash/e;->b:I

    if-nez v4, :cond_245

    .line 4149
    new-instance v4, Ljava/lang/Thread;

    new-instance v5, Lxcrash/e$1;

    invoke-direct {v5, v0}, Lxcrash/e$1;-><init>(Lxcrash/e;)V

    invoke-direct {v4, v5, v1}, Ljava/lang/Thread;-><init>(Ljava/lang/Runnable;Ljava/lang/String;)V

    .line 4154
    invoke-virtual {v4}, Ljava/lang/Thread;->start()V

    goto :goto_260

    .line 4156
    :cond_245
    new-instance v4, Ljava/util/Timer;

    invoke-direct {v4, v1}, Ljava/util/Timer;-><init>(Ljava/lang/String;)V

    new-instance v1, Lxcrash/e$3;

    invoke-direct {v1, v0}, Lxcrash/e$3;-><init>(Lxcrash/e;)V

    iget v0, v0, Lxcrash/e;->b:I

    int-to-long v5, v0

    invoke-virtual {v4, v1, v5, v6}, Ljava/util/Timer;->schedule(Ljava/util/TimerTask;J)V
    :try_end_255
    .catch Ljava/lang/Exception; {:try_start_231 .. :try_end_255} :catch_256
    .catchall {:try_start_231 .. :try_end_255} :catchall_262

    goto :goto_260

    :catch_256
    move-exception v0

    .line 4876
    :try_start_257
    sget-object v1, Lxcrash/m;->e:Lxcrash/h;

    const-string v4, "xcrash"

    const-string v5, "FileManager maintain start failed"

    .line 4166
    invoke-interface {v1, v4, v5, v0}, Lxcrash/h;->c(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
    :try_end_260
    .catchall {:try_start_257 .. :try_end_260} :catchall_262

    .line 215
    :cond_260
    :goto_260
    monitor-exit v2

    return v3

    :catchall_262
    move-exception v0

    monitor-exit v2

    throw v0
.end method

.method public static a()Z
    .registers 1

    .line 46
    sget-boolean v0, Lxcrash/m;->a:Z

    return v0
.end method

.method protected static a(Lxcrash/f;)Z
    .registers 2

    .line 925
    invoke-static {}, Lxcrash/NativeHandler;->getInstance()Lxcrash/NativeHandler;

    move-result-object v0

    invoke-virtual {v0, p0}, Lxcrash/NativeHandler;->dumpTrace(Lxcrash/f;)Z

    move-result p0

    return p0
.end method

.method static b()Ljava/lang/String;
    .registers 1

    .line 864
    sget-object v0, Lxcrash/m;->b:Ljava/lang/String;

    return-object v0
.end method

.method static c()Ljava/lang/String;
    .registers 1

    .line 868
    sget-object v0, Lxcrash/m;->c:Ljava/lang/String;

    return-object v0
.end method

.method static d()Lxcrash/h;
    .registers 1

    .line 876
    sget-object v0, Lxcrash/m;->e:Lxcrash/h;

    return-object v0
.end method