CrackMe.apk
Download file
package kotlinx.coroutines.internal;
import androidx.concurrent.futures.AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.AtomicLongFieldUpdater;
import java.util.concurrent.atomic.AtomicReferenceArray;
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
import kotlin.Metadata;
import kotlin.jvm.functions.Function1;
import kotlin.jvm.functions.Function2;
import kotlin.jvm.internal.DefaultConstructorMarker;
import kotlinx.coroutines.DebugKt;
@Metadata(d1 = {"\u00004\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0010\b\n\u0000\n\u0002\u0010\u000b\n\u0002\b\u0006\n\u0002\u0010\t\n\u0000\n\u0002\u0018\u0002\n\u0002\b\n\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010 \n\u0002\b\u0016\b\u0000\u0018\u0000 /*\b\b\u0000\u0010\u0002*\u00020\u00012\u00020\u0001:\u0002/0B\u0017\u0012\u0006\u0010\u0004\u001a\u00020\u0003\u0012\u0006\u0010\u0006\u001a\u00020\u0005¢\u0006\u0004\b\u0007\u0010\bJ\u0015\u0010\n\u001a\u00020\u00032\u0006\u0010\t\u001a\u00028\u0000¢\u0006\u0004\b\n\u0010\u000bJ'\u0010\u000f\u001a\u0012\u0012\u0004\u0012\u00028\u00000\u0000j\b\u0012\u0004\u0012\u00028\u0000`\u000e2\u0006\u0010\r\u001a\u00020\fH\u0002¢\u0006\u0004\b\u000f\u0010\u0010J'\u0010\u0011\u001a\u0012\u0012\u0004\u0012\u00028\u00000\u0000j\b\u0012\u0004\u0012\u00028\u0000`\u000e2\u0006\u0010\r\u001a\u00020\fH\u0002¢\u0006\u0004\b\u0011\u0010\u0010J\r\u0010\u0012\u001a\u00020\u0005¢\u0006\u0004\b\u0012\u0010\u0013J3\u0010\u0015\u001a\u0016\u0012\u0004\u0012\u00028\u0000\u0018\u00010\u0000j\n\u0012\u0004\u0012\u00028\u0000\u0018\u0001`\u000e2\u0006\u0010\u0014\u001a\u00020\u00032\u0006\u0010\t\u001a\u00028\u0000H\u0002¢\u0006\u0004\b\u0015\u0010\u0016J\r\u0010\u0017\u001a\u00020\u0005¢\u0006\u0004\b\u0017\u0010\u0013J-\u0010\u001c\u001a\b\u0012\u0004\u0012\u00028\u00010\u001b\"\u0004\b\u0001\u0010\u00182\u0012\u0010\u001a\u001a\u000e\u0012\u0004\u0012\u00028\u0000\u0012\u0004\u0012\u00028\u00010\u0019¢\u0006\u0004\b\u001c\u0010\u001dJ\u000f\u0010\u001e\u001a\u00020\fH\u0002¢\u0006\u0004\b\u001e\u0010\u001fJ\u0013\u0010 \u001a\b\u0012\u0004\u0012\u00028\u00000\u0000¢\u0006\u0004\b \u0010!J\u000f\u0010\"\u001a\u0004\u0018\u00010\u0001¢\u0006\u0004\b\"\u0010#J3\u0010&\u001a\u0016\u0012\u0004\u0012\u00028\u0000\u0018\u00010\u0000j\n\u0012\u0004\u0012\u00028\u0000\u0018\u0001`\u000e2\u0006\u0010$\u001a\u00020\u00032\u0006\u0010%\u001a\u00020\u0003H\u0002¢\u0006\u0004\b&\u0010'R\u0014\u0010\u0004\u001a\u00020\u00038\u0002X\u0004¢\u0006\u0006\n\u0004\b\u0004\u0010(R\u0011\u0010)\u001a\u00020\u00058F¢\u0006\u0006\u001a\u0004\b)\u0010\u0013R\u0014\u0010*\u001a\u00020\u00038\u0002X\u0004¢\u0006\u0006\n\u0004\b*\u0010(R\u0014\u0010\u0006\u001a\u00020\u00058\u0002X\u0004¢\u0006\u0006\n\u0004\b\u0006\u0010+R\u0011\u0010.\u001a\u00020\u00038F¢\u0006\u0006\u001a\u0004\b,\u0010-¨\u00061"}, d2 = {"Lkotlinx/coroutines/internal/LockFreeTaskQueueCore;", "", "E", "", "capacity", "", "singleConsumer", "<init>", "(IZ)V", "element", "addLast", "(Ljava/lang/Object;)I", "", "state", "Lkotlinx/coroutines/internal/Core;", "allocateNextCopy", "(J)Lkotlinx/coroutines/internal/LockFreeTaskQueueCore;", "allocateOrGetNextCopy", "close", "()Z", "index", "fillPlaceholder", "(ILjava/lang/Object;)Lkotlinx/coroutines/internal/LockFreeTaskQueueCore;", "isClosed", "R", "Lkotlin/Function1;", "transform", "", "map", "(Lkotlin/jvm/functions/Function1;)Ljava/util/List;", "markFrozen", "()J", "next", "()Lkotlinx/coroutines/internal/LockFreeTaskQueueCore;", "removeFirstOrNull", "()Ljava/lang/Object;", "oldHead", "newHead", "removeSlowPath", "(II)Lkotlinx/coroutines/internal/LockFreeTaskQueueCore;", "I", "isEmpty", "mask", "Z", "getSize", "()I", "size", "Companion", "Placeholder", "kotlinx-coroutines-core"}, k = 1, mv = {1, 6, 0}, xi = 48)
/* compiled from: LockFreeTaskQueue.kt */
public final class LockFreeTaskQueueCore<E> {
public static final int ADD_CLOSED = 2;
public static final int ADD_FROZEN = 1;
public static final int ADD_SUCCESS = 0;
public static final int CAPACITY_BITS = 30;
public static final long CLOSED_MASK = 2305843009213693952L;
public static final int CLOSED_SHIFT = 61;
public static final Companion Companion = new Companion((DefaultConstructorMarker) null);
public static final long FROZEN_MASK = 1152921504606846976L;
public static final int FROZEN_SHIFT = 60;
public static final long HEAD_MASK = 1073741823;
public static final int HEAD_SHIFT = 0;
public static final int INITIAL_CAPACITY = 8;
public static final int MAX_CAPACITY_MASK = 1073741823;
public static final int MIN_ADD_SPIN_CAPACITY = 1024;
public static final Symbol REMOVE_FROZEN = new Symbol("REMOVE_FROZEN");
public static final long TAIL_MASK = 1152921503533105152L;
public static final int TAIL_SHIFT = 30;
private static final /* synthetic */ AtomicReferenceFieldUpdater _next$FU;
private static final /* synthetic */ AtomicLongFieldUpdater _state$FU;
private volatile /* synthetic */ Object _next = null;
private volatile /* synthetic */ long _state = 0;
private /* synthetic */ AtomicReferenceArray array;
private final int capacity;
private final int mask;
private final boolean singleConsumer;
public LockFreeTaskQueueCore(int i, boolean z) {
this.capacity = i;
this.singleConsumer = z;
int i2 = i - 1;
this.mask = i2;
this.array = new AtomicReferenceArray(i);
boolean z2 = false;
if (i2 <= 1073741823) {
if (!((i & i2) == 0 ? true : z2)) {
throw new IllegalStateException("Check failed.".toString());
}
return;
}
throw new IllegalStateException("Check failed.".toString());
}
public final boolean isEmpty() {
long j = this._state;
return ((int) ((HEAD_MASK & j) >> 0)) == ((int) ((j & TAIL_MASK) >> 30));
}
public final int getSize() {
long j = this._state;
return 1073741823 & (((int) ((j & TAIL_MASK) >> 30)) - ((int) ((HEAD_MASK & j) >> 0)));
}
private final LockFreeTaskQueueCore<E> fillPlaceholder(int i, E e) {
Object obj = this.array.get(this.mask & i);
if (!(obj instanceof Placeholder) || ((Placeholder) obj).index != i) {
return null;
}
this.array.set(i & this.mask, e);
return this;
}
public final LockFreeTaskQueueCore<E> next() {
return allocateOrGetNextCopy(markFrozen());
}
private final LockFreeTaskQueueCore<E> allocateNextCopy(long j) {
LockFreeTaskQueueCore<E> lockFreeTaskQueueCore = new LockFreeTaskQueueCore<>(this.capacity * 2, this.singleConsumer);
int i = (int) ((HEAD_MASK & j) >> 0);
int i2 = (int) ((TAIL_MASK & j) >> 30);
while (true) {
int i3 = this.mask;
if ((i & i3) != (i2 & i3)) {
Object obj = this.array.get(i3 & i);
if (obj == null) {
obj = new Placeholder(i);
}
lockFreeTaskQueueCore.array.set(lockFreeTaskQueueCore.mask & i, obj);
i++;
} else {
lockFreeTaskQueueCore._state = Companion.wo(j, 1152921504606846976L);
return lockFreeTaskQueueCore;
}
}
}
public final <R> List<R> map(Function1<? super E, ? extends R> function1) {
ArrayList arrayList = new ArrayList(this.capacity);
long j = this._state;
int i = (int) ((HEAD_MASK & j) >> 0);
int i2 = (int) ((j & TAIL_MASK) >> 30);
while (true) {
int i3 = this.mask;
if ((i & i3) == (i2 & i3)) {
return arrayList;
}
Object obj = this.array.get(i3 & i);
if (obj != null && !(obj instanceof Placeholder)) {
arrayList.add(function1.invoke(obj));
}
i++;
}
}
public final boolean isClosed() {
return (this._state & CLOSED_MASK) != 0;
}
@Metadata(d1 = {"\u0000\u0012\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0000\n\u0002\u0010\b\n\u0002\b\u0002\b\u0000\u0018\u00002\u00020\u0001B\r\u0012\u0006\u0010\u0002\u001a\u00020\u0003¢\u0006\u0002\u0010\u0004R\u0010\u0010\u0002\u001a\u00020\u00038\u0006X\u0004¢\u0006\u0002\n\u0000¨\u0006\u0005"}, d2 = {"Lkotlinx/coroutines/internal/LockFreeTaskQueueCore$Placeholder;", "", "index", "", "(I)V", "kotlinx-coroutines-core"}, k = 1, mv = {1, 6, 0}, xi = 48)
/* compiled from: LockFreeTaskQueue.kt */
public static final class Placeholder {
public final int index;
public Placeholder(int i) {
this.index = i;
}
}
@Metadata(d1 = {"\u00000\n\u0002\u0018\u0002\n\u0002\u0010\u0000\n\u0002\b\u0002\n\u0002\u0010\b\n\u0002\b\u0004\n\u0002\u0010\t\n\u0002\b\t\n\u0002\u0018\u0002\n\u0002\b\n\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0007\b\u0003\u0018\u00002\u00020\u0001B\u0007\b\u0002¢\u0006\u0002\u0010\u0002J\n\u0010\u0016\u001a\u00020\u0004*\u00020\tJ\u0012\u0010\u0017\u001a\u00020\t*\u00020\t2\u0006\u0010\u0018\u001a\u00020\u0004J\u0012\u0010\u0019\u001a\u00020\t*\u00020\t2\u0006\u0010\u001a\u001a\u00020\u0004JP\u0010\u001b\u001a\u0002H\u001c\"\u0004\b\u0001\u0010\u001c*\u00020\t26\u0010\u001d\u001a2\u0012\u0013\u0012\u00110\u0004¢\u0006\f\b\u001f\u0012\b\b \u0012\u0004\b\b(!\u0012\u0013\u0012\u00110\u0004¢\u0006\f\b\u001f\u0012\b\b \u0012\u0004\b\b(\"\u0012\u0004\u0012\u0002H\u001c0\u001eH\b¢\u0006\u0002\u0010#J\u0015\u0010$\u001a\u00020\t*\u00020\t2\u0006\u0010%\u001a\u00020\tH\u0004R\u000e\u0010\u0003\u001a\u00020\u0004XT¢\u0006\u0002\n\u0000R\u000e\u0010\u0005\u001a\u00020\u0004XT¢\u0006\u0002\n\u0000R\u000e\u0010\u0006\u001a\u00020\u0004XT¢\u0006\u0002\n\u0000R\u000e\u0010\u0007\u001a\u00020\u0004XT¢\u0006\u0002\n\u0000R\u000e\u0010\b\u001a\u00020\tXT¢\u0006\u0002\n\u0000R\u000e\u0010\n\u001a\u00020\u0004XT¢\u0006\u0002\n\u0000R\u000e\u0010\u000b\u001a\u00020\tXT¢\u0006\u0002\n\u0000R\u000e\u0010\f\u001a\u00020\u0004XT¢\u0006\u0002\n\u0000R\u000e\u0010\r\u001a\u00020\tXT¢\u0006\u0002\n\u0000R\u000e\u0010\u000e\u001a\u00020\u0004XT¢\u0006\u0002\n\u0000R\u000e\u0010\u000f\u001a\u00020\u0004XT¢\u0006\u0002\n\u0000R\u000e\u0010\u0010\u001a\u00020\u0004XT¢\u0006\u0002\n\u0000R\u000e\u0010\u0011\u001a\u00020\u0004XT¢\u0006\u0002\n\u0000R\u0010\u0010\u0012\u001a\u00020\u00138\u0006X\u0004¢\u0006\u0002\n\u0000R\u000e\u0010\u0014\u001a\u00020\tXT¢\u0006\u0002\n\u0000R\u000e\u0010\u0015\u001a\u00020\u0004XT¢\u0006\u0002\n\u0000¨\u0006&"}, d2 = {"Lkotlinx/coroutines/internal/LockFreeTaskQueueCore$Companion;", "", "()V", "ADD_CLOSED", "", "ADD_FROZEN", "ADD_SUCCESS", "CAPACITY_BITS", "CLOSED_MASK", "", "CLOSED_SHIFT", "FROZEN_MASK", "FROZEN_SHIFT", "HEAD_MASK", "HEAD_SHIFT", "INITIAL_CAPACITY", "MAX_CAPACITY_MASK", "MIN_ADD_SPIN_CAPACITY", "REMOVE_FROZEN", "Lkotlinx/coroutines/internal/Symbol;", "TAIL_MASK", "TAIL_SHIFT", "addFailReason", "updateHead", "newHead", "updateTail", "newTail", "withState", "T", "block", "Lkotlin/Function2;", "Lkotlin/ParameterName;", "name", "head", "tail", "(JLkotlin/jvm/functions/Function2;)Ljava/lang/Object;", "wo", "other", "kotlinx-coroutines-core"}, k = 1, mv = {1, 6, 0}, xi = 48)
/* compiled from: LockFreeTaskQueue.kt */
public static final class Companion {
public /* synthetic */ Companion(DefaultConstructorMarker defaultConstructorMarker) {
this();
}
public final int addFailReason(long j) {
return (j & LockFreeTaskQueueCore.CLOSED_MASK) != 0 ? 2 : 1;
}
public final long wo(long j, long j2) {
return j & (~j2);
}
private Companion() {
}
public final long updateHead(long j, int i) {
return wo(j, LockFreeTaskQueueCore.HEAD_MASK) | (((long) i) << 0);
}
public final long updateTail(long j, int i) {
return wo(j, LockFreeTaskQueueCore.TAIL_MASK) | (((long) i) << 30);
}
public final <T> T withState(long j, Function2<? super Integer, ? super Integer, ? extends T> function2) {
return function2.invoke(Integer.valueOf((int) ((LockFreeTaskQueueCore.HEAD_MASK & j) >> 0)), Integer.valueOf((int) ((j & LockFreeTaskQueueCore.TAIL_MASK) >> 30)));
}
}
static {
Class<LockFreeTaskQueueCore> cls = LockFreeTaskQueueCore.class;
_next$FU = AtomicReferenceFieldUpdater.newUpdater(cls, Object.class, "_next");
_state$FU = AtomicLongFieldUpdater.newUpdater(cls, "_state");
}
public final boolean close() {
long j;
do {
j = this._state;
if ((j & CLOSED_MASK) != 0) {
return true;
}
if ((1152921504606846976L & j) != 0) {
return false;
}
} while (!_state$FU.compareAndSet(this, j, j | CLOSED_MASK));
return true;
}
/* JADX WARNING: Removed duplicated region for block: B:19:0x0069 A[LOOP:1: B:19:0x0069->B:22:0x007b, LOOP_START, PHI: r0
PHI: (r0v7 kotlinx.coroutines.internal.LockFreeTaskQueueCore) = (r0v6 kotlinx.coroutines.internal.LockFreeTaskQueueCore), (r0v9 kotlinx.coroutines.internal.LockFreeTaskQueueCore) binds: [B:18:0x0061, B:22:0x007b] A[DONT_GENERATE, DONT_INLINE]] */
/* Code decompiled incorrectly, please refer to instructions dump. */
public final int addLast(E r14) {
/*
r13 = this;
L_0x0000:
long r2 = r13._state
r0 = 3458764513820540928(0x3000000000000000, double:1.727233711018889E-77)
long r0 = r0 & r2
r6 = 0
int r4 = (r0 > r6 ? 1 : (r0 == r6 ? 0 : -1))
if (r4 == 0) goto L_0x0012
kotlinx.coroutines.internal.LockFreeTaskQueueCore$Companion r14 = Companion
int r14 = r14.addFailReason(r2)
return r14
L_0x0012:
kotlinx.coroutines.internal.LockFreeTaskQueueCore$Companion r0 = Companion
r4 = 1073741823(0x3fffffff, double:5.304989472E-315)
long r4 = r4 & r2
r8 = 0
long r4 = r4 >> r8
int r1 = (int) r4
r4 = 1152921503533105152(0xfffffffc0000000, double:1.2882296003504729E-231)
long r4 = r4 & r2
r9 = 30
long r4 = r4 >> r9
int r9 = (int) r4
int r10 = r13.mask
int r4 = r9 + 2
r4 = r4 & r10
r5 = r1 & r10
r11 = 1
if (r4 != r5) goto L_0x0030
return r11
L_0x0030:
boolean r4 = r13.singleConsumer
r5 = 1073741823(0x3fffffff, float:1.9999999)
if (r4 != 0) goto L_0x004f
java.util.concurrent.atomic.AtomicReferenceArray r4 = r13.array
r12 = r9 & r10
java.lang.Object r4 = r4.get(r12)
if (r4 == 0) goto L_0x004f
int r0 = r13.capacity
r2 = 1024(0x400, float:1.435E-42)
if (r0 < r2) goto L_0x004e
int r9 = r9 - r1
r1 = r9 & r5
int r0 = r0 >> 1
if (r1 <= r0) goto L_0x0000
L_0x004e:
return r11
L_0x004f:
int r1 = r9 + 1
r1 = r1 & r5
java.util.concurrent.atomic.AtomicLongFieldUpdater r4 = _state$FU
long r11 = r0.updateTail(r2, r1)
r0 = r4
r1 = r13
r4 = r11
boolean r0 = r0.compareAndSet(r1, r2, r4)
if (r0 == 0) goto L_0x0000
java.util.concurrent.atomic.AtomicReferenceArray r0 = r13.array
r1 = r9 & r10
r0.set(r1, r14)
r0 = r13
L_0x0069:
long r1 = r0._state
r3 = 1152921504606846976(0x1000000000000000, double:1.2882297539194267E-231)
long r1 = r1 & r3
int r3 = (r1 > r6 ? 1 : (r1 == r6 ? 0 : -1))
if (r3 != 0) goto L_0x0073
goto L_0x007d
L_0x0073:
kotlinx.coroutines.internal.LockFreeTaskQueueCore r0 = r0.next()
kotlinx.coroutines.internal.LockFreeTaskQueueCore r0 = r0.fillPlaceholder(r9, r14)
if (r0 != 0) goto L_0x0069
L_0x007d:
return r8
*/
throw new UnsupportedOperationException("Method not decompiled: kotlinx.coroutines.internal.LockFreeTaskQueueCore.addLast(java.lang.Object):int");
}
public final Object removeFirstOrNull() {
while (true) {
long j = this._state;
if ((1152921504606846976L & j) != 0) {
return REMOVE_FROZEN;
}
Companion companion = Companion;
int i = (int) ((HEAD_MASK & j) >> 0);
int i2 = (int) ((TAIL_MASK & j) >> 30);
int i3 = this.mask;
if ((i2 & i3) == (i & i3)) {
return null;
}
Object obj = this.array.get(i3 & i);
if (obj == null) {
if (this.singleConsumer) {
return null;
}
} else if (obj instanceof Placeholder) {
return null;
} else {
int i4 = (i + 1) & MAX_CAPACITY_MASK;
if (_state$FU.compareAndSet(this, j, companion.updateHead(j, i4))) {
this.array.set(this.mask & i, (Object) null);
return obj;
} else if (this.singleConsumer) {
LockFreeTaskQueueCore lockFreeTaskQueueCore = this;
do {
lockFreeTaskQueueCore = lockFreeTaskQueueCore.removeSlowPath(i, i4);
} while (lockFreeTaskQueueCore != null);
return obj;
}
}
}
}
private final LockFreeTaskQueueCore<E> removeSlowPath(int i, int i2) {
long j;
Companion companion;
int i3;
do {
j = this._state;
companion = Companion;
boolean z = false;
i3 = (int) ((HEAD_MASK & j) >> 0);
if (DebugKt.getASSERTIONS_ENABLED()) {
if (i3 == i) {
z = true;
}
if (!z) {
throw new AssertionError();
}
}
if ((1152921504606846976L & j) != 0) {
return next();
}
} while (!_state$FU.compareAndSet(this, j, companion.updateHead(j, i2)));
this.array.set(this.mask & i3, (Object) null);
return null;
}
private final long markFrozen() {
long j;
long j2;
do {
j = this._state;
if ((j & 1152921504606846976L) != 0) {
return j;
}
j2 = j | 1152921504606846976L;
} while (!_state$FU.compareAndSet(this, j, j2));
return j2;
}
private final LockFreeTaskQueueCore<E> allocateOrGetNextCopy(long j) {
while (true) {
LockFreeTaskQueueCore<E> lockFreeTaskQueueCore = (LockFreeTaskQueueCore) this._next;
if (lockFreeTaskQueueCore != null) {
return lockFreeTaskQueueCore;
}
AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(_next$FU, this, (Object) null, allocateNextCopy(j));
}
}
}
Download file