i.smali
.class final Lxcrash/i;
.super Ljava/lang/Object;
.source "SourceFile"
# interfaces
.implements Ljava/lang/Thread$UncaughtExceptionHandler;
# static fields
.field private static final q:Lxcrash/i;
# instance fields
.field a:I
.field b:Ljava/lang/String;
.field c:Ljava/lang/String;
.field d:Ljava/lang/String;
.field e:Z
.field f:Ljava/lang/String;
.field g:I
.field h:I
.field i:I
.field j:Z
.field k:Z
.field l:Z
.field m:I
.field n:[Ljava/lang/String;
.field o:Lxcrash/f;
.field p:Ljava/lang/Thread$UncaughtExceptionHandler;
.field private final r:Ljava/util/Date;
# direct methods
.method static constructor <clinit>()V
.registers 1
.line 43
new-instance v0, Lxcrash/i;
invoke-direct {v0}, Lxcrash/i;-><init>()V
sput-object v0, Lxcrash/i;->q:Lxcrash/i;
return-void
.end method
.method private constructor <init>()V
.registers 2
.line 64
invoke-direct {p0}, Ljava/lang/Object;-><init>()V
.line 45
new-instance v0, Ljava/util/Date;
invoke-direct {v0}, Ljava/util/Date;-><init>()V
iput-object v0, p0, Lxcrash/i;->r:Ljava/util/Date;
const/4 v0, 0x0
.line 62
iput-object v0, p0, Lxcrash/i;->p:Ljava/lang/Thread$UncaughtExceptionHandler;
return-void
.end method
.method private a(Ljava/lang/Thread;)Ljava/lang/String;
.registers 16
.line 230
iget-object v0, p0, Lxcrash/i;->n:[Ljava/lang/String;
const/4 v1, 0x0
if-eqz v0, :cond_29
.line 231
new-instance v0, Ljava/util/ArrayList;
invoke-direct {v0}, Ljava/util/ArrayList;-><init>()V
.line 232
iget-object v2, p0, Lxcrash/i;->n:[Ljava/lang/String;
array-length v3, v2
const/4 v4, 0x0
:goto_e
if-ge v4, v3, :cond_2a
aget-object v5, v2, v4
.line 234
:try_start_12
invoke-static {v5}, Ljava/util/regex/Pattern;->compile(Ljava/lang/String;)Ljava/util/regex/Pattern;
move-result-object v5
invoke-virtual {v0, v5}, Ljava/util/ArrayList;->add(Ljava/lang/Object;)Z
:try_end_19
.catch Ljava/lang/Exception; {:try_start_12 .. :try_end_19} :catch_1a
goto :goto_26
:catch_1a
move-exception v5
.line 236
invoke-static {}, Lxcrash/m;->d()Lxcrash/h;
move-result-object v6
const-string v7, "xcrash"
const-string v8, "JavaCrashHandler pattern compile failed"
invoke-interface {v6, v7, v8, v5}, Lxcrash/h;->b(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
:goto_26
add-int/lit8 v4, v4, 0x1
goto :goto_e
:cond_29
const/4 v0, 0x0
.line 241
:cond_2a
new-instance v2, Ljava/lang/StringBuilder;
invoke-direct {v2}, Ljava/lang/StringBuilder;-><init>()V
.line 242
invoke-static {}, Ljava/lang/Thread;->getAllStackTraces()Ljava/util/Map;
move-result-object v3
.line 243
invoke-interface {v3}, Ljava/util/Map;->entrySet()Ljava/util/Set;
move-result-object v4
invoke-interface {v4}, Ljava/util/Set;->iterator()Ljava/util/Iterator;
move-result-object v4
const/4 v5, 0x0
const/4 v6, 0x0
const/4 v7, 0x0
:cond_3e
:goto_3e
invoke-interface {v4}, Ljava/util/Iterator;->hasNext()Z
move-result v8
const-string v9, "--- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---\n"
const-string v10, "\n"
if-eqz v8, :cond_da
invoke-interface {v4}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v8
check-cast v8, Ljava/util/Map$Entry;
.line 245
invoke-interface {v8}, Ljava/util/Map$Entry;->getKey()Ljava/lang/Object;
move-result-object v11
check-cast v11, Ljava/lang/Thread;
.line 246
invoke-interface {v8}, Ljava/util/Map$Entry;->getValue()Ljava/lang/Object;
move-result-object v8
check-cast v8, [Ljava/lang/StackTraceElement;
.line 249
invoke-virtual {v11}, Ljava/lang/Thread;->getName()Ljava/lang/String;
move-result-object v12
invoke-virtual {p1}, Ljava/lang/Thread;->getName()Ljava/lang/String;
move-result-object v13
invoke-virtual {v12, v13}, Ljava/lang/String;->equals(Ljava/lang/Object;)Z
move-result v12
if-nez v12, :cond_3e
if-eqz v0, :cond_74
.line 252
invoke-virtual {v11}, Ljava/lang/Thread;->getName()Ljava/lang/String;
move-result-object v12
invoke-static {v0, v12}, Lxcrash/i;->a(Ljava/util/ArrayList;Ljava/lang/String;)Z
move-result v12
if-eqz v12, :cond_3e
:cond_74
add-int/lit8 v6, v6, 0x1
.line 256
iget v12, p0, Lxcrash/i;->m:I
if-lez v12, :cond_7f
if-lt v5, v12, :cond_7f
add-int/lit8 v7, v7, 0x1
goto :goto_3e
.line 261
:cond_7f
invoke-virtual {v2, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v9, "pid: "
.line 262
invoke-virtual {v2, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v9, p0, Lxcrash/i;->a:I
invoke-virtual {v2, v9}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v9, ", tid: "
invoke-virtual {v2, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v11}, Ljava/lang/Thread;->getId()J
move-result-wide v12
invoke-virtual {v2, v12, v13}, Ljava/lang/StringBuilder;->append(J)Ljava/lang/StringBuilder;
const-string v9, ", name: "
invoke-virtual {v2, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v11}, Ljava/lang/Thread;->getName()Ljava/lang/String;
move-result-object v9
invoke-virtual {v2, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v9, " >>> "
invoke-virtual {v2, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v9, p0, Lxcrash/i;->b:Ljava/lang/String;
invoke-virtual {v2, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v9, " <<<\n"
invoke-virtual {v2, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 263
invoke-virtual {v2, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v9, "java stacktrace:\n"
.line 264
invoke-virtual {v2, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 265
array-length v9, v8
const/4 v11, 0x0
:goto_bd
if-ge v11, v9, :cond_d3
aget-object v12, v8, v11
const-string v13, " at "
.line 266
invoke-virtual {v2, v13}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v12}, Ljava/lang/StackTraceElement;->toString()Ljava/lang/String;
move-result-object v12
invoke-virtual {v2, v12}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
add-int/lit8 v11, v11, 0x1
goto :goto_bd
.line 268
:cond_d3
invoke-virtual {v2, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
add-int/lit8 v5, v5, 0x1
goto/16 :goto_3e
.line 273
:cond_da
invoke-interface {v3}, Ljava/util/Map;->size()I
move-result p1
const/4 v1, 0x1
if-le p1, v1, :cond_122
if-nez v5, :cond_e6
.line 275
invoke-virtual {v2, v9}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
:cond_e6
const-string p1, "total JVM threads (exclude the crashed thread): "
.line 278
invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-interface {v3}, Ljava/util/Map;->size()I
move-result p1
sub-int/2addr p1, v1
invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v2, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
if-eqz v0, :cond_103
const-string p1, "JVM threads matched whitelist: "
.line 280
invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v6}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v2, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 282
:cond_103
iget p1, p0, Lxcrash/i;->m:I
if-lez p1, :cond_112
const-string p1, "JVM threads ignored by max count limit: "
.line 283
invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v7}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v2, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
:cond_112
const-string p1, "dumped JVM threads:"
.line 285
invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v2, v5}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
invoke-virtual {v2, v10}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string p1, "+++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++\n"
.line 286
invoke-virtual {v2, p1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 289
:cond_122
invoke-virtual {v2}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object p1
return-object p1
.end method
.method static a()Lxcrash/i;
.registers 1
.line 68
sget-object v0, Lxcrash/i;->q:Lxcrash/i;
return-object v0
.end method
.method private static a(Ljava/util/ArrayList;Ljava/lang/String;)Z
.registers 3
.annotation system Ldalvik/annotation/Signature;
value = {
"(",
"Ljava/util/ArrayList<",
"Ljava/util/regex/Pattern;",
">;",
"Ljava/lang/String;",
")Z"
}
.end annotation
.line 293
invoke-virtual {p0}, Ljava/util/ArrayList;->iterator()Ljava/util/Iterator;
move-result-object p0
:cond_4
invoke-interface {p0}, Ljava/util/Iterator;->hasNext()Z
move-result v0
if-eqz v0, :cond_1c
invoke-interface {p0}, Ljava/util/Iterator;->next()Ljava/lang/Object;
move-result-object v0
check-cast v0, Ljava/util/regex/Pattern;
.line 294
invoke-virtual {v0, p1}, Ljava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
move-result-object v0
invoke-virtual {v0}, Ljava/util/regex/Matcher;->matches()Z
move-result v0
if-eqz v0, :cond_4
const/4 p0, 0x1
return p0
:cond_1c
const/4 p0, 0x0
return p0
.end method
# virtual methods
.method public final uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V
.registers 14
const-string v0, "xcrash"
.line 101
iget-object v1, p0, Lxcrash/i;->p:Ljava/lang/Thread$UncaughtExceptionHandler;
if-eqz v1, :cond_9
.line 102
invoke-static {v1}, Ljava/lang/Thread;->setDefaultUncaughtExceptionHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V
.line 1123
:cond_9
:try_start_9
new-instance v1, Ljava/util/Date;
invoke-direct {v1}, Ljava/util/Date;-><init>()V
.line 1126
invoke-static {}, Lxcrash/NativeHandler;->getInstance()Lxcrash/NativeHandler;
move-result-object v2
invoke-virtual {v2}, Lxcrash/NativeHandler;->notifyJavaCrashed()V
.line 1127
invoke-static {}, Lxcrash/b;->a()Lxcrash/b;
move-result-object v2
.line 2123
iget-object v3, v2, Lxcrash/b;->n:Landroid/os/FileObserver;
:try_end_1b
.catch Ljava/lang/Exception; {:try_start_9 .. :try_end_1b} :catch_1b7
const/4 v4, 0x0
if-eqz v3, :cond_36
.line 2125
:try_start_1e
iget-object v3, v2, Lxcrash/b;->n:Landroid/os/FileObserver;
invoke-virtual {v3}, Landroid/os/FileObserver;->stopWatching()V
:try_end_23
.catch Ljava/lang/Exception; {:try_start_1e .. :try_end_23} :catch_28
.catchall {:try_start_1e .. :try_end_23} :catchall_26
.line 2129
:goto_23
:try_start_23
iput-object v4, v2, Lxcrash/b;->n:Landroid/os/FileObserver;
:try_end_25
.catch Ljava/lang/Exception; {:try_start_23 .. :try_end_25} :catch_1b7
goto :goto_36
:catchall_26
move-exception v1
goto :goto_33
:catch_28
move-exception v3
.line 2127
:try_start_29
invoke-static {}, Lxcrash/m;->d()Lxcrash/h;
move-result-object v5
const-string v6, "AnrHandler fileObserver stopWatching failed"
invoke-interface {v5, v0, v6, v3}, Lxcrash/h;->c(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
:try_end_32
.catchall {:try_start_29 .. :try_end_32} :catchall_26
goto :goto_23
.line 2129
:goto_33
:try_start_33
iput-object v4, v2, Lxcrash/b;->n:Landroid/os/FileObserver;
throw v1
:try_end_36
.catch Ljava/lang/Exception; {:try_start_33 .. :try_end_36} :catch_1b7
.line 1132
:cond_36
:goto_36
:try_start_36
sget-object v2, Ljava/util/Locale;->US:Ljava/util/Locale;
const-string v3, "%s/%s_%020d_%s__%s%s"
const/4 v5, 0x6
new-array v5, v5, [Ljava/lang/Object;
const/4 v6, 0x0
iget-object v7, p0, Lxcrash/i;->f:Ljava/lang/String;
aput-object v7, v5, v6
const/4 v6, 0x1
const-string v7, "tombstone"
aput-object v7, v5, v6
const/4 v6, 0x2
iget-object v7, p0, Lxcrash/i;->r:Ljava/util/Date;
invoke-virtual {v7}, Ljava/util/Date;->getTime()J
move-result-wide v7
const-wide/16 v9, 0x3e8
mul-long v7, v7, v9
invoke-static {v7, v8}, Ljava/lang/Long;->valueOf(J)Ljava/lang/Long;
move-result-object v7
aput-object v7, v5, v6
const/4 v6, 0x3
iget-object v7, p0, Lxcrash/i;->d:Ljava/lang/String;
aput-object v7, v5, v6
const/4 v6, 0x4
iget-object v7, p0, Lxcrash/i;->b:Ljava/lang/String;
aput-object v7, v5, v6
const/4 v6, 0x5
const-string v7, ".java.xcrash"
aput-object v7, v5, v6
invoke-static {v2, v3, v5}, Ljava/lang/String;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
move-result-object v2
.line 1133
invoke-static {}, Lxcrash/e;->a()Lxcrash/e;
move-result-object v3
invoke-virtual {v3, v2}, Lxcrash/e;->a(Ljava/lang/String;)Ljava/io/File;
move-result-object v2
:try_end_73
.catch Ljava/lang/Exception; {:try_start_36 .. :try_end_73} :catch_74
goto :goto_7f
:catch_74
move-exception v2
.line 1135
:try_start_75
invoke-static {}, Lxcrash/m;->d()Lxcrash/h;
move-result-object v3
const-string v5, "JavaCrashHandler createLogFile failed"
invoke-interface {v3, v0, v5, v2}, Lxcrash/h;->c(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
:try_end_7e
.catch Ljava/lang/Exception; {:try_start_75 .. :try_end_7e} :catch_1b7
move-object v2, v4
.line 2209
:goto_7f
:try_start_7f
new-instance v3, Ljava/io/StringWriter;
invoke-direct {v3}, Ljava/io/StringWriter;-><init>()V
.line 2210
new-instance v5, Ljava/io/PrintWriter;
invoke-direct {v5, v3}, Ljava/io/PrintWriter;-><init>(Ljava/io/Writer;)V
.line 2211
invoke-virtual {p2, v5}, Ljava/lang/Throwable;->printStackTrace(Ljava/io/PrintWriter;)V
.line 2212
invoke-virtual {v3}, Ljava/io/StringWriter;->toString()Ljava/lang/String;
move-result-object v3
.line 2214
new-instance v5, Ljava/lang/StringBuilder;
invoke-direct {v5}, Ljava/lang/StringBuilder;-><init>()V
iget-object v6, p0, Lxcrash/i;->r:Ljava/util/Date;
const-string v7, "java"
iget-object v8, p0, Lxcrash/i;->c:Ljava/lang/String;
iget-object v9, p0, Lxcrash/i;->d:Ljava/lang/String;
invoke-static {v6, v1, v7, v8, v9}, Lxcrash/l;->a(Ljava/util/Date;Ljava/util/Date;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v1, "pid: "
invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget v1, p0, Lxcrash/i;->a:I
invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v1, ", tid: "
invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
.line 2215
invoke-static {}, Landroid/os/Process;->myTid()I
move-result v1
invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(I)Ljava/lang/StringBuilder;
const-string v1, ", name: "
invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {p1}, Ljava/lang/Thread;->getName()Ljava/lang/String;
move-result-object v1
invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v1, " >>> "
invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
iget-object v1, p0, Lxcrash/i;->b:Ljava/lang/String;
invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v1, " <<<\n\njava stacktrace:\n"
invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5, v3}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v1, "\n"
invoke-virtual {v5, v1}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v5}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
:try_end_e1
.catch Ljava/lang/Exception; {:try_start_7f .. :try_end_e1} :catch_e2
goto :goto_ed
:catch_e2
move-exception v1
.line 1143
:try_start_e3
invoke-static {}, Lxcrash/m;->d()Lxcrash/h;
move-result-object v3
const-string v5, "JavaCrashHandler getEmergency failed"
invoke-interface {v3, v0, v5, v1}, Lxcrash/h;->c(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
:try_end_ec
.catch Ljava/lang/Exception; {:try_start_e3 .. :try_end_ec} :catch_1b7
move-object v1, v4
:goto_ed
if-eqz v2, :cond_1a4
.line 1150
:try_start_ef
new-instance v3, Ljava/io/RandomAccessFile;
const-string v5, "rws"
invoke-direct {v3, v2, v5}, Ljava/io/RandomAccessFile;-><init>(Ljava/io/File;Ljava/lang/String;)V
:try_end_f6
.catch Ljava/lang/Exception; {:try_start_ef .. :try_end_f6} :catch_18b
.catchall {:try_start_ef .. :try_end_f6} :catchall_189
const-string v5, "UTF-8"
if-eqz v1, :cond_105
.line 1154
:try_start_fa
invoke-virtual {v1, v5}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B
move-result-object v6
invoke-virtual {v3, v6}, Ljava/io/RandomAccessFile;->write([B)V
:try_end_101
.catch Ljava/lang/Exception; {:try_start_fa .. :try_end_101} :catch_102
.catchall {:try_start_fa .. :try_end_101} :catchall_19c
goto :goto_105
:catch_102
move-exception v5
goto/16 :goto_18d
.line 1161
:cond_105
:goto_105
:try_start_105
iget v1, p0, Lxcrash/i;->i:I
if-gtz v1, :cond_111
iget v1, p0, Lxcrash/i;->g:I
if-gtz v1, :cond_111
iget v1, p0, Lxcrash/i;->h:I
if-lez v1, :cond_122
.line 1162
:cond_111
iget v1, p0, Lxcrash/i;->i:I
iget v6, p0, Lxcrash/i;->g:I
iget v7, p0, Lxcrash/i;->h:I
invoke-static {v1, v6, v7}, Lxcrash/l;->a(III)Ljava/lang/String;
move-result-object v1
invoke-virtual {v1, v5}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B
move-result-object v1
invoke-virtual {v3, v1}, Ljava/io/RandomAccessFile;->write([B)V
.line 1166
:cond_122
iget-boolean v1, p0, Lxcrash/i;->j:Z
if-eqz v1, :cond_131
.line 1167
invoke-static {}, Lxcrash/l;->f()Ljava/lang/String;
move-result-object v1
invoke-virtual {v1, v5}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B
move-result-object v1
invoke-virtual {v3, v1}, Ljava/io/RandomAccessFile;->write([B)V
.line 1171
:cond_131
iget-boolean v1, p0, Lxcrash/i;->k:Z
if-eqz v1, :cond_140
.line 1172
invoke-static {}, Lxcrash/l;->e()Ljava/lang/String;
move-result-object v1
invoke-virtual {v1, v5}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B
move-result-object v1
invoke-virtual {v3, v1}, Ljava/io/RandomAccessFile;->write([B)V
.line 1176
:cond_140
invoke-static {}, Lxcrash/l;->d()Ljava/lang/String;
move-result-object v1
invoke-virtual {v1, v5}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B
move-result-object v1
invoke-virtual {v3, v1}, Ljava/io/RandomAccessFile;->write([B)V
.line 1179
new-instance v1, Ljava/lang/StringBuilder;
const-string v6, "foreground:\n"
invoke-direct {v1, v6}, Ljava/lang/StringBuilder;-><init>(Ljava/lang/String;)V
invoke-static {}, Lxcrash/a;->a()Lxcrash/a;
move-result-object v6
.line 3109
iget-boolean v6, v6, Lxcrash/a;->b:Z
if-eqz v6, :cond_15d
const-string v6, "yes"
goto :goto_15f
:cond_15d
const-string v6, "no"
.line 1179
:goto_15f
invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
const-string v6, "\n\n"
invoke-virtual {v1, v6}, Ljava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
invoke-virtual {v1}, Ljava/lang/StringBuilder;->toString()Ljava/lang/String;
move-result-object v1
invoke-virtual {v1, v5}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B
move-result-object v1
invoke-virtual {v3, v1}, Ljava/io/RandomAccessFile;->write([B)V
.line 1182
iget-boolean v1, p0, Lxcrash/i;->l:Z
if-eqz v1, :cond_181
.line 1183
invoke-direct {p0, p1}, Lxcrash/i;->a(Ljava/lang/Thread;)Ljava/lang/String;
move-result-object v1
invoke-virtual {v1, v5}, Ljava/lang/String;->getBytes(Ljava/lang/String;)[B
move-result-object v1
invoke-virtual {v3, v1}, Ljava/io/RandomAccessFile;->write([B)V
:try_end_181
.catch Ljava/lang/Exception; {:try_start_105 .. :try_end_181} :catch_186
.catchall {:try_start_105 .. :try_end_181} :catchall_19c
.line 1190
:cond_181
:try_start_181
invoke-virtual {v3}, Ljava/io/RandomAccessFile;->close()V
:try_end_184
.catch Ljava/lang/Exception; {:try_start_181 .. :try_end_184} :catch_184
:catch_184
move-object v1, v4
goto :goto_1a4
:catch_186
move-exception v5
move-object v1, v4
goto :goto_18d
:catchall_189
move-exception v1
goto :goto_19e
:catch_18b
move-exception v5
move-object v3, v4
.line 1186
:goto_18d
:try_start_18d
invoke-static {}, Lxcrash/m;->d()Lxcrash/h;
move-result-object v6
const-string v7, "JavaCrashHandler write log file failed"
invoke-interface {v6, v0, v7, v5}, Lxcrash/h;->c(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
:try_end_196
.catchall {:try_start_18d .. :try_end_196} :catchall_19c
if-eqz v3, :cond_1a4
.line 1190
:try_start_198
invoke-virtual {v3}, Ljava/io/RandomAccessFile;->close()V
:try_end_19b
.catch Ljava/lang/Exception; {:try_start_198 .. :try_end_19b} :catch_1a4
goto :goto_1a4
:catchall_19c
move-exception v1
move-object v4, v3
:goto_19e
if-eqz v4, :cond_1a3
:try_start_1a0
invoke-virtual {v4}, Ljava/io/RandomAccessFile;->close()V
:try_end_1a3
.catch Ljava/lang/Exception; {:try_start_1a0 .. :try_end_1a3} :catch_1a3
.line 1192
:catch_1a3
:cond_1a3
:try_start_1a3
throw v1
.line 1198
:catch_1a4
:cond_1a4
:goto_1a4
iget-object v0, p0, Lxcrash/i;->o:Lxcrash/f;
:try_end_1a6
.catch Ljava/lang/Exception; {:try_start_1a3 .. :try_end_1a6} :catch_1b7
if-eqz v0, :cond_1c1
.line 1200
:try_start_1a8
iget-object v0, p0, Lxcrash/i;->o:Lxcrash/f;
if-nez v2, :cond_1ad
goto :goto_1b1
:cond_1ad
invoke-virtual {v2}, Ljava/io/File;->getAbsolutePath()Ljava/lang/String;
move-result-object v4
:goto_1b1
invoke-interface {v0, v4, v1}, Lxcrash/f;->a(Ljava/lang/String;Ljava/lang/String;)V
:try_end_1b4
.catch Ljava/lang/Exception; {:try_start_1a8 .. :try_end_1b4} :catch_1b5
goto :goto_1c1
:catch_1b5
nop
goto :goto_1c1
:catch_1b7
move-exception v1
.line 108
invoke-static {}, Lxcrash/m;->d()Lxcrash/h;
move-result-object v2
const-string v3, "JavaCrashHandler handleException failed"
invoke-interface {v2, v0, v3, v1}, Lxcrash/h;->c(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)V
.line 111
:cond_1c1
:goto_1c1
iget-boolean v0, p0, Lxcrash/i;->e:Z
if-eqz v0, :cond_1cd
.line 112
iget-object v0, p0, Lxcrash/i;->p:Ljava/lang/Thread$UncaughtExceptionHandler;
if-eqz v0, :cond_1de
.line 113
invoke-interface {v0, p1, p2}, Ljava/lang/Thread$UncaughtExceptionHandler;->uncaughtException(Ljava/lang/Thread;Ljava/lang/Throwable;)V
return-void
.line 116
:cond_1cd
invoke-static {}, Lxcrash/a;->a()Lxcrash/a;
move-result-object p1
invoke-virtual {p1}, Lxcrash/a;->b()V
.line 117
iget p1, p0, Lxcrash/i;->a:I
invoke-static {p1}, Landroid/os/Process;->killProcess(I)V
const/16 p1, 0xa
.line 118
invoke-static {p1}, Ljava/lang/System;->exit(I)V
:cond_1de
return-void
.end method