CrackMe.apk
Download file
package kotlinx.coroutines.internal;
import java.util.ArrayDeque;
import java.util.Iterator;
import java.util.Objects;
import kotlin.Metadata;
import kotlin.Pair;
import kotlin.TuplesKt;
import kotlin.coroutines.Continuation;
import kotlin.coroutines.jvm.internal.CoroutineStackFrame;
import kotlin.jvm.internal.InlineMarker;
import kotlin.jvm.internal.Intrinsics;
import kotlin.text.StringsKt;
import kotlinx.coroutines.CopyableThrowable;
import kotlinx.coroutines.DebugKt;
@Metadata(d1 = {"\u0000f\n\u0000\n\u0002\u0010\u000e\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010\u0003\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\u0011\n\u0002\b\u0002\n\u0002\u0010\u0001\n\u0002\b\u0006\n\u0002\u0018\u0002\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u000b\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\b\u001a\u0014\u0010\u0006\u001a\u00060\u0007j\u0002`\b2\u0006\u0010\t\u001a\u00020\u0001H\u0007\u001a9\u0010\n\u001a\u0002H\u000b\"\b\b\u0000\u0010\u000b*\u00020\f2\u0006\u0010\r\u001a\u0002H\u000b2\u0006\u0010\u000e\u001a\u0002H\u000b2\u0010\u0010\u000f\u001a\f\u0012\b\u0012\u00060\u0007j\u0002`\b0\u0010H\u0002¢\u0006\u0002\u0010\u0011\u001a\u001e\u0010\u0012\u001a\f\u0012\b\u0012\u00060\u0007j\u0002`\b0\u00102\n\u0010\u0013\u001a\u00060\u0014j\u0002`\u0015H\u0002\u001a1\u0010\u0016\u001a\u00020\u00172\u0010\u0010\u0018\u001a\f\u0012\b\u0012\u00060\u0007j\u0002`\b0\u00192\u0010\u0010\u000e\u001a\f\u0012\b\u0012\u00060\u0007j\u0002`\b0\u0010H\u0002¢\u0006\u0002\u0010\u001a\u001a\u0019\u0010\u001b\u001a\u00020\u001c2\u0006\u0010\u001d\u001a\u00020\fHHø\u0001\u0000¢\u0006\u0002\u0010\u001e\u001a+\u0010\u001f\u001a\u0002H\u000b\"\b\b\u0000\u0010\u000b*\u00020\f2\u0006\u0010\u001d\u001a\u0002H\u000b2\n\u0010\u0013\u001a\u00060\u0014j\u0002`\u0015H\u0002¢\u0006\u0002\u0010 \u001a\u001f\u0010!\u001a\u0002H\u000b\"\b\b\u0000\u0010\u000b*\u00020\f2\u0006\u0010\u001d\u001a\u0002H\u000bH\u0000¢\u0006\u0002\u0010\"\u001a,\u0010!\u001a\u0002H\u000b\"\b\b\u0000\u0010\u000b*\u00020\f2\u0006\u0010\u001d\u001a\u0002H\u000b2\n\u0010\u0013\u001a\u0006\u0012\u0002\b\u00030#H\b¢\u0006\u0002\u0010$\u001a!\u0010%\u001a\u0004\u0018\u0001H\u000b\"\b\b\u0000\u0010\u000b*\u00020\f2\u0006\u0010\u001d\u001a\u0002H\u000bH\u0002¢\u0006\u0002\u0010\"\u001a \u0010&\u001a\u0002H\u000b\"\b\b\u0000\u0010\u000b*\u00020\f2\u0006\u0010\u001d\u001a\u0002H\u000bH\b¢\u0006\u0002\u0010\"\u001a\u001f\u0010'\u001a\u0002H\u000b\"\b\b\u0000\u0010\u000b*\u00020\f2\u0006\u0010\u001d\u001a\u0002H\u000bH\u0000¢\u0006\u0002\u0010\"\u001a1\u0010(\u001a\u0018\u0012\u0004\u0012\u0002H\u000b\u0012\u000e\u0012\f\u0012\b\u0012\u00060\u0007j\u0002`\b0\u00190)\"\b\b\u0000\u0010\u000b*\u00020\f*\u0002H\u000bH\u0002¢\u0006\u0002\u0010*\u001a\u001c\u0010+\u001a\u00020,*\u00060\u0007j\u0002`\b2\n\u0010-\u001a\u00060\u0007j\u0002`\bH\u0002\u001a#\u0010.\u001a\u00020/*\f\u0012\b\u0012\u00060\u0007j\u0002`\b0\u00192\u0006\u00100\u001a\u00020\u0001H\u0002¢\u0006\u0002\u00101\u001a\u0014\u00102\u001a\u00020\u0017*\u00020\f2\u0006\u0010\r\u001a\u00020\fH\u0000\u001a\u0010\u00103\u001a\u00020,*\u00060\u0007j\u0002`\bH\u0000\u001a\u001b\u00104\u001a\u0002H\u000b\"\b\b\u0000\u0010\u000b*\u00020\f*\u0002H\u000bH\u0002¢\u0006\u0002\u0010\"\"\u000e\u0010\u0000\u001a\u00020\u0001XT¢\u0006\u0002\n\u0000\"\u0016\u0010\u0002\u001a\n \u0003*\u0004\u0018\u00010\u00010\u0001X\u0004¢\u0006\u0002\n\u0000\"\u000e\u0010\u0004\u001a\u00020\u0001XT¢\u0006\u0002\n\u0000\"\u0016\u0010\u0005\u001a\n \u0003*\u0004\u0018\u00010\u00010\u0001X\u0004¢\u0006\u0002\n\u0000*\f\b\u0000\u00105\"\u00020\u00142\u00020\u0014*\f\b\u0000\u00106\"\u00020\u00072\u00020\u0007\u0002\u0004\n\u0002\b\u0019¨\u00067"}, d2 = {"baseContinuationImplClass", "", "baseContinuationImplClassName", "kotlin.jvm.PlatformType", "stackTraceRecoveryClass", "stackTraceRecoveryClassName", "artificialFrame", "Ljava/lang/StackTraceElement;", "Lkotlinx/coroutines/internal/StackTraceElement;", "message", "createFinalException", "E", "", "cause", "result", "resultStackTrace", "Ljava/util/ArrayDeque;", "(Ljava/lang/Throwable;Ljava/lang/Throwable;Ljava/util/ArrayDeque;)Ljava/lang/Throwable;", "createStackTrace", "continuation", "Lkotlin/coroutines/jvm/internal/CoroutineStackFrame;", "Lkotlinx/coroutines/internal/CoroutineStackFrame;", "mergeRecoveredTraces", "", "recoveredStacktrace", "", "([Ljava/lang/StackTraceElement;Ljava/util/ArrayDeque;)V", "recoverAndThrow", "", "exception", "(Ljava/lang/Throwable;Lkotlin/coroutines/Continuation;)Ljava/lang/Object;", "recoverFromStackFrame", "(Ljava/lang/Throwable;Lkotlin/coroutines/jvm/internal/CoroutineStackFrame;)Ljava/lang/Throwable;", "recoverStackTrace", "(Ljava/lang/Throwable;)Ljava/lang/Throwable;", "Lkotlin/coroutines/Continuation;", "(Ljava/lang/Throwable;Lkotlin/coroutines/Continuation;)Ljava/lang/Throwable;", "tryCopyAndVerify", "unwrap", "unwrapImpl", "causeAndStacktrace", "Lkotlin/Pair;", "(Ljava/lang/Throwable;)Lkotlin/Pair;", "elementWiseEquals", "", "e", "frameIndex", "", "methodName", "([Ljava/lang/StackTraceElement;Ljava/lang/String;)I", "initCause", "isArtificial", "sanitizeStackTrace", "CoroutineStackFrame", "StackTraceElement", "kotlinx-coroutines-core"}, k = 2, mv = {1, 6, 0}, xi = 48)
/* compiled from: StackTraceRecovery.kt */
public final class StackTraceRecoveryKt {
private static final String baseContinuationImplClass = "kotlin.coroutines.jvm.internal.BaseContinuationImpl";
private static final String baseContinuationImplClassName;
private static final String stackTraceRecoveryClass = "kotlinx.coroutines.internal.StackTraceRecoveryKt";
private static final String stackTraceRecoveryClassName;
public static /* synthetic */ void CoroutineStackFrame$annotations() {
}
public static /* synthetic */ void StackTraceElement$annotations() {
}
/* JADX DEBUG: Multi-variable search result rejected for TypeSearchVarInfo{r2v0, resolved type: java.lang.String} */
/* JADX DEBUG: Multi-variable search result rejected for TypeSearchVarInfo{r1v3, resolved type: java.lang.String} */
/* JADX DEBUG: Multi-variable search result rejected for TypeSearchVarInfo{r1v6, resolved type: java.lang.Object} */
/* JADX DEBUG: Multi-variable search result rejected for TypeSearchVarInfo{r1v10, resolved type: java.lang.Object} */
/* JADX DEBUG: Multi-variable search result rejected for TypeSearchVarInfo{r2v5, resolved type: java.lang.Object} */
/* JADX DEBUG: Multi-variable search result rejected for TypeSearchVarInfo{r2v9, resolved type: java.lang.Object} */
/* JADX DEBUG: Multi-variable search result rejected for TypeSearchVarInfo{r1v12, resolved type: java.lang.String} */
/* JADX DEBUG: Multi-variable search result rejected for TypeSearchVarInfo{r1v13, resolved type: java.lang.String} */
/* JADX DEBUG: Multi-variable search result rejected for TypeSearchVarInfo{r2v10, resolved type: java.lang.String} */
/* JADX DEBUG: Multi-variable search result rejected for TypeSearchVarInfo{r2v11, resolved type: java.lang.String} */
/* JADX WARNING: Multi-variable type inference failed */
static {
/*
java.lang.String r0 = "kotlinx.coroutines.internal.StackTraceRecoveryKt"
java.lang.String r1 = "kotlin.coroutines.jvm.internal.BaseContinuationImpl"
kotlin.Result$Companion r2 = kotlin.Result.Companion // Catch:{ all -> 0x0013 }
java.lang.Class r2 = java.lang.Class.forName(r1) // Catch:{ all -> 0x0013 }
java.lang.String r2 = r2.getCanonicalName() // Catch:{ all -> 0x0013 }
java.lang.Object r2 = kotlin.Result.m352constructorimpl(r2) // Catch:{ all -> 0x0013 }
goto L_0x001e
L_0x0013:
r2 = move-exception
kotlin.Result$Companion r3 = kotlin.Result.Companion
java.lang.Object r2 = kotlin.ResultKt.createFailure(r2)
java.lang.Object r2 = kotlin.Result.m352constructorimpl(r2)
L_0x001e:
java.lang.Throwable r3 = kotlin.Result.m355exceptionOrNullimpl(r2)
if (r3 != 0) goto L_0x0025
r1 = r2
L_0x0025:
java.lang.String r1 = (java.lang.String) r1
baseContinuationImplClassName = r1
kotlin.Result$Companion r1 = kotlin.Result.Companion // Catch:{ all -> 0x0038 }
java.lang.Class r1 = java.lang.Class.forName(r0) // Catch:{ all -> 0x0038 }
java.lang.String r1 = r1.getCanonicalName() // Catch:{ all -> 0x0038 }
java.lang.Object r1 = kotlin.Result.m352constructorimpl(r1) // Catch:{ all -> 0x0038 }
goto L_0x0043
L_0x0038:
r1 = move-exception
kotlin.Result$Companion r2 = kotlin.Result.Companion
java.lang.Object r1 = kotlin.ResultKt.createFailure(r1)
java.lang.Object r1 = kotlin.Result.m352constructorimpl(r1)
L_0x0043:
java.lang.Throwable r2 = kotlin.Result.m355exceptionOrNullimpl(r1)
if (r2 != 0) goto L_0x004a
r0 = r1
L_0x004a:
java.lang.String r0 = (java.lang.String) r0
stackTraceRecoveryClassName = r0
return
*/
throw new UnsupportedOperationException("Method not decompiled: kotlinx.coroutines.internal.StackTraceRecoveryKt.<clinit>():void");
}
public static final <E extends Throwable> E recoverStackTrace(E e) {
Throwable tryCopyAndVerify;
if (DebugKt.getRECOVER_STACK_TRACES() && (tryCopyAndVerify = tryCopyAndVerify(e)) != null) {
return sanitizeStackTrace(tryCopyAndVerify);
}
return e;
}
private static final <E extends Throwable> E sanitizeStackTrace(E e) {
StackTraceElement stackTraceElement;
StackTraceElement[] stackTrace = e.getStackTrace();
int length = stackTrace.length;
int frameIndex = frameIndex(stackTrace, stackTraceRecoveryClassName);
int i = frameIndex + 1;
int frameIndex2 = frameIndex(stackTrace, baseContinuationImplClassName);
int i2 = (length - frameIndex) - (frameIndex2 == -1 ? 0 : length - frameIndex2);
StackTraceElement[] stackTraceElementArr = new StackTraceElement[i2];
for (int i3 = 0; i3 < i2; i3++) {
if (i3 == 0) {
stackTraceElement = artificialFrame("Coroutine boundary");
} else {
stackTraceElement = stackTrace[(i + i3) - 1];
}
stackTraceElementArr[i3] = stackTraceElement;
}
e.setStackTrace(stackTraceElementArr);
return e;
}
public static final <E extends Throwable> E recoverStackTrace(E e, Continuation<?> continuation) {
return (!DebugKt.getRECOVER_STACK_TRACES() || !(continuation instanceof CoroutineStackFrame)) ? e : recoverFromStackFrame(e, (CoroutineStackFrame) continuation);
}
/* access modifiers changed from: private */
public static final <E extends Throwable> E recoverFromStackFrame(E e, CoroutineStackFrame coroutineStackFrame) {
Pair causeAndStacktrace = causeAndStacktrace(e);
E e2 = (Throwable) causeAndStacktrace.component1();
StackTraceElement[] stackTraceElementArr = (StackTraceElement[]) causeAndStacktrace.component2();
Throwable tryCopyAndVerify = tryCopyAndVerify(e2);
if (tryCopyAndVerify == null) {
return e;
}
ArrayDeque createStackTrace = createStackTrace(coroutineStackFrame);
if (createStackTrace.isEmpty()) {
return e;
}
if (e2 != e) {
mergeRecoveredTraces(stackTraceElementArr, createStackTrace);
}
return createFinalException(e2, tryCopyAndVerify, createStackTrace);
}
private static final <E extends Throwable> E tryCopyAndVerify(E e) {
E tryCopyException = ExceptionsConstructorKt.tryCopyException(e);
if (tryCopyException == null) {
return null;
}
if ((e instanceof CopyableThrowable) || Intrinsics.areEqual((Object) tryCopyException.getMessage(), (Object) e.getMessage())) {
return tryCopyException;
}
return null;
}
private static final <E extends Throwable> E createFinalException(E e, E e2, ArrayDeque<StackTraceElement> arrayDeque) {
arrayDeque.addFirst(artificialFrame("Coroutine boundary"));
StackTraceElement[] stackTrace = e.getStackTrace();
int frameIndex = frameIndex(stackTrace, baseContinuationImplClassName);
int i = 0;
if (frameIndex == -1) {
Object[] array = arrayDeque.toArray(new StackTraceElement[0]);
Objects.requireNonNull(array, "null cannot be cast to non-null type kotlin.Array<T of kotlin.collections.ArraysKt__ArraysJVMKt.toTypedArray>");
e2.setStackTrace((StackTraceElement[]) array);
return e2;
}
StackTraceElement[] stackTraceElementArr = new StackTraceElement[(arrayDeque.size() + frameIndex)];
for (int i2 = 0; i2 < frameIndex; i2++) {
stackTraceElementArr[i2] = stackTrace[i2];
}
Iterator<StackTraceElement> it = arrayDeque.iterator();
while (it.hasNext()) {
int i3 = i + 1;
stackTraceElementArr[i + frameIndex] = it.next();
i = i3;
}
e2.setStackTrace(stackTraceElementArr);
return e2;
}
private static final <E extends Throwable> Pair<E, StackTraceElement[]> causeAndStacktrace(E e) {
boolean z;
Throwable cause = e.getCause();
if (cause == null || !Intrinsics.areEqual((Object) cause.getClass(), (Object) e.getClass())) {
return TuplesKt.to(e, new StackTraceElement[0]);
}
StackTraceElement[] stackTrace = e.getStackTrace();
int length = stackTrace.length;
int i = 0;
while (true) {
if (i >= length) {
z = false;
break;
}
StackTraceElement stackTraceElement = stackTrace[i];
i++;
if (isArtificial(stackTraceElement)) {
z = true;
break;
}
}
if (z) {
return TuplesKt.to(cause, stackTrace);
}
return TuplesKt.to(e, new StackTraceElement[0]);
}
public static final Object recoverAndThrow(Throwable th, Continuation<?> continuation) {
if (!DebugKt.getRECOVER_STACK_TRACES()) {
throw th;
} else if (!(continuation instanceof CoroutineStackFrame)) {
throw th;
} else {
throw recoverFromStackFrame(th, (CoroutineStackFrame) continuation);
}
}
private static final Object recoverAndThrow$$forInline(Throwable th, Continuation<?> continuation) {
if (DebugKt.getRECOVER_STACK_TRACES()) {
InlineMarker.mark(0);
if (!(continuation instanceof CoroutineStackFrame)) {
throw th;
}
throw recoverFromStackFrame(th, (CoroutineStackFrame) continuation);
}
throw th;
}
public static final <E extends Throwable> E unwrap(E e) {
return !DebugKt.getRECOVER_STACK_TRACES() ? e : unwrapImpl(e);
}
public static final <E extends Throwable> E unwrapImpl(E e) {
E cause = e.getCause();
if (cause != null && Intrinsics.areEqual((Object) cause.getClass(), (Object) e.getClass())) {
StackTraceElement[] stackTrace = e.getStackTrace();
int length = stackTrace.length;
boolean z = false;
int i = 0;
while (true) {
if (i >= length) {
break;
}
StackTraceElement stackTraceElement = stackTrace[i];
i++;
if (isArtificial(stackTraceElement)) {
z = true;
break;
}
}
if (z) {
return cause;
}
}
return e;
}
private static final ArrayDeque<StackTraceElement> createStackTrace(CoroutineStackFrame coroutineStackFrame) {
ArrayDeque<StackTraceElement> arrayDeque = new ArrayDeque<>();
StackTraceElement stackTraceElement = coroutineStackFrame.getStackTraceElement();
if (stackTraceElement != null) {
arrayDeque.add(stackTraceElement);
}
while (true) {
if (!(coroutineStackFrame instanceof CoroutineStackFrame)) {
coroutineStackFrame = null;
}
coroutineStackFrame = coroutineStackFrame == null ? null : coroutineStackFrame.getCallerFrame();
if (coroutineStackFrame == null) {
return arrayDeque;
}
StackTraceElement stackTraceElement2 = coroutineStackFrame.getStackTraceElement();
if (stackTraceElement2 != null) {
arrayDeque.add(stackTraceElement2);
}
}
}
public static final StackTraceElement artificialFrame(String str) {
return new StackTraceElement(Intrinsics.stringPlus("\b\b\b(", str), "\b", "\b", -1);
}
public static final boolean isArtificial(StackTraceElement stackTraceElement) {
return StringsKt.startsWith$default(stackTraceElement.getClassName(), "\b\b\b", false, 2, (Object) null);
}
private static final boolean elementWiseEquals(StackTraceElement stackTraceElement, StackTraceElement stackTraceElement2) {
return stackTraceElement.getLineNumber() == stackTraceElement2.getLineNumber() && Intrinsics.areEqual((Object) stackTraceElement.getMethodName(), (Object) stackTraceElement2.getMethodName()) && Intrinsics.areEqual((Object) stackTraceElement.getFileName(), (Object) stackTraceElement2.getFileName()) && Intrinsics.areEqual((Object) stackTraceElement.getClassName(), (Object) stackTraceElement2.getClassName());
}
public static final void initCause(Throwable th, Throwable th2) {
th.initCause(th2);
}
private static final void mergeRecoveredTraces(StackTraceElement[] stackTraceElementArr, ArrayDeque<StackTraceElement> arrayDeque) {
int length = stackTraceElementArr.length;
int i = 0;
while (true) {
if (i >= length) {
i = -1;
break;
}
int i2 = i + 1;
if (isArtificial(stackTraceElementArr[i])) {
break;
}
i = i2;
}
int i3 = i + 1;
int length2 = stackTraceElementArr.length - 1;
if (i3 <= length2) {
while (true) {
int i4 = length2 - 1;
if (elementWiseEquals(stackTraceElementArr[length2], arrayDeque.getLast())) {
arrayDeque.removeLast();
}
arrayDeque.addFirst(stackTraceElementArr[length2]);
if (length2 != i3) {
length2 = i4;
} else {
return;
}
}
}
}
private static final int frameIndex(StackTraceElement[] stackTraceElementArr, String str) {
int length = stackTraceElementArr.length;
int i = 0;
while (i < length) {
int i2 = i + 1;
if (Intrinsics.areEqual((Object) str, (Object) stackTraceElementArr[i].getClassName())) {
return i;
}
i = i2;
}
return -1;
}
}
Download file