CrackMe.apk
Download file
package kotlinx.coroutines.internal;
import androidx.concurrent.futures.AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0;
import java.util.Objects;
import java.util.concurrent.atomic.AtomicReferenceFieldUpdater;
import kotlin.Metadata;
import kotlin.jvm.functions.Function0;
import kotlin.jvm.functions.Function1;
import kotlin.jvm.internal.Intrinsics;
import kotlinx.coroutines.DebugKt;
import kotlinx.coroutines.DebugStringsKt;
@Metadata(d1 = {"\u0000j\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\u0010\u000b\n\u0002\b\u0003\n\u0002\u0018\u0002\n\u0002\b\n\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\b\n\u0002\u0018\u0002\n\u0002\b\n\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0010\u000e\n\u0002\b\u0003\n\u0002\u0010\b\n\u0002\b\u0007\n\u0002\u0010\u0000\n\u0002\b\f\b\u0017\u0018\u00002\u00020C:\u0005JKLMNB\u0007¢\u0006\u0004\b\u0001\u0010\u0002J\u0019\u0010\u0006\u001a\u00020\u00052\n\u0010\u0004\u001a\u00060\u0000j\u0002`\u0003¢\u0006\u0004\b\u0006\u0010\u0007J,\u0010\u000b\u001a\u00020\t2\n\u0010\u0004\u001a\u00060\u0000j\u0002`\u00032\u000e\b\u0004\u0010\n\u001a\b\u0012\u0004\u0012\u00020\t0\bH\b¢\u0006\u0004\b\u000b\u0010\fJ4\u0010\u000f\u001a\u00020\t2\n\u0010\u0004\u001a\u00060\u0000j\u0002`\u00032\u0016\u0010\u000e\u001a\u0012\u0012\b\u0012\u00060\u0000j\u0002`\u0003\u0012\u0004\u0012\u00020\t0\rH\b¢\u0006\u0004\b\u000f\u0010\u0010JD\u0010\u0011\u001a\u00020\t2\n\u0010\u0004\u001a\u00060\u0000j\u0002`\u00032\u0016\u0010\u000e\u001a\u0012\u0012\b\u0012\u00060\u0000j\u0002`\u0003\u0012\u0004\u0012\u00020\t0\r2\u000e\b\u0004\u0010\n\u001a\b\u0012\u0004\u0012\u00020\t0\bH\b¢\u0006\u0004\b\u0011\u0010\u0012J'\u0010\u0014\u001a\u00020\t2\n\u0010\u0004\u001a\u00060\u0000j\u0002`\u00032\n\u0010\u0013\u001a\u00060\u0000j\u0002`\u0003H\u0001¢\u0006\u0004\b\u0014\u0010\u0015J\u0019\u0010\u0016\u001a\u00020\t2\n\u0010\u0004\u001a\u00060\u0000j\u0002`\u0003¢\u0006\u0004\b\u0016\u0010\u0017J\"\u0010\u001a\u001a\n\u0018\u00010\u0000j\u0004\u0018\u0001`\u00032\b\u0010\u0019\u001a\u0004\u0018\u00010\u0018H\u0010¢\u0006\u0004\b\u001a\u0010\u001bJ)\u0010\u001e\u001a\b\u0012\u0004\u0012\u00028\u00000\u001d\"\f\b\u0000\u0010\u001c*\u00060\u0000j\u0002`\u00032\u0006\u0010\u0004\u001a\u00028\u0000¢\u0006\u0004\b\u001e\u0010\u001fJ\u0017\u0010!\u001a\f\u0012\b\u0012\u00060\u0000j\u0002`\u00030 ¢\u0006\u0004\b!\u0010\"J \u0010$\u001a\u00060\u0000j\u0002`\u00032\n\u0010#\u001a\u00060\u0000j\u0002`\u0003H\u0010¢\u0006\u0004\b$\u0010%J\u001b\u0010&\u001a\u00020\u00052\n\u0010\u0013\u001a\u00060\u0000j\u0002`\u0003H\u0002¢\u0006\u0004\b&\u0010\u0007J\r\u0010'\u001a\u00020\u0005¢\u0006\u0004\b'\u0010\u0002J\u000f\u0010(\u001a\u00020\u0005H\u0001¢\u0006\u0004\b(\u0010\u0002J,\u0010*\u001a\u00020)2\n\u0010\u0004\u001a\u00060\u0000j\u0002`\u00032\u000e\b\u0004\u0010\n\u001a\b\u0012\u0004\u0012\u00020\t0\bH\b¢\u0006\u0004\b*\u0010+J\u0017\u0010,\u001a\n\u0018\u00010\u0000j\u0004\u0018\u0001`\u0003H\u0014¢\u0006\u0004\b,\u0010-J\u000f\u0010.\u001a\u00020\tH\u0016¢\u0006\u0004\b.\u0010/J.\u00100\u001a\u0004\u0018\u00018\u0000\"\u0006\b\u0000\u0010\u001c\u0018\u00012\u0012\u0010\u000e\u001a\u000e\u0012\u0004\u0012\u00028\u0000\u0012\u0004\u0012\u00020\t0\rH\b¢\u0006\u0004\b0\u00101J\u0015\u00102\u001a\n\u0018\u00010\u0000j\u0004\u0018\u0001`\u0003¢\u0006\u0004\b2\u0010-J\u0017\u00103\u001a\n\u0018\u00010\u0000j\u0004\u0018\u0001`\u0003H\u0001¢\u0006\u0004\b3\u0010-J\u000f\u00105\u001a\u000204H\u0002¢\u0006\u0004\b5\u00106J\u000f\u00108\u001a\u000207H\u0016¢\u0006\u0004\b8\u00109J/\u0010<\u001a\u00020;2\n\u0010\u0004\u001a\u00060\u0000j\u0002`\u00032\n\u0010\u0013\u001a\u00060\u0000j\u0002`\u00032\u0006\u0010:\u001a\u00020)H\u0001¢\u0006\u0004\b<\u0010=J'\u0010A\u001a\u00020\u00052\n\u0010>\u001a\u00060\u0000j\u0002`\u00032\n\u0010\u0013\u001a\u00060\u0000j\u0002`\u0003H\u0000¢\u0006\u0004\b?\u0010@R\u0014\u0010B\u001a\u00020\t8VX\u0004¢\u0006\u0006\u001a\u0004\bB\u0010/R\u0011\u0010\u0013\u001a\u00020C8F¢\u0006\u0006\u001a\u0004\bD\u0010ER\u0015\u0010G\u001a\u00060\u0000j\u0002`\u00038F¢\u0006\u0006\u001a\u0004\bF\u0010-R\u0015\u0010I\u001a\u00060\u0000j\u0002`\u00038F¢\u0006\u0006\u001a\u0004\bH\u0010-¨\u0006O"}, d2 = {"Lkotlinx/coroutines/internal/LockFreeLinkedListNode;", "<init>", "()V", "Lkotlinx/coroutines/internal/Node;", "node", "", "addLast", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V", "Lkotlin/Function0;", "", "condition", "addLastIf", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlin/jvm/functions/Function0;)Z", "Lkotlin/Function1;", "predicate", "addLastIfPrev", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlin/jvm/functions/Function1;)Z", "addLastIfPrevAndIf", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlin/jvm/functions/Function1;Lkotlin/jvm/functions/Function0;)Z", "next", "addNext", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Z", "addOneIfEmpty", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Z", "Lkotlinx/coroutines/internal/OpDescriptor;", "op", "correctPrev", "(Lkotlinx/coroutines/internal/OpDescriptor;)Lkotlinx/coroutines/internal/LockFreeLinkedListNode;", "T", "Lkotlinx/coroutines/internal/LockFreeLinkedListNode$AddLastDesc;", "describeAddLast", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Lkotlinx/coroutines/internal/LockFreeLinkedListNode$AddLastDesc;", "Lkotlinx/coroutines/internal/LockFreeLinkedListNode$RemoveFirstDesc;", "describeRemoveFirst", "()Lkotlinx/coroutines/internal/LockFreeLinkedListNode$RemoveFirstDesc;", "current", "findPrevNonRemoved", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Lkotlinx/coroutines/internal/LockFreeLinkedListNode;", "finishAdd", "helpRemove", "helpRemovePrev", "Lkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;", "makeCondAddOp", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlin/jvm/functions/Function0;)Lkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;", "nextIfRemoved", "()Lkotlinx/coroutines/internal/LockFreeLinkedListNode;", "remove", "()Z", "removeFirstIfIsInstanceOfOrPeekIf", "(Lkotlin/jvm/functions/Function1;)Ljava/lang/Object;", "removeFirstOrNull", "removeOrNext", "Lkotlinx/coroutines/internal/Removed;", "removed", "()Lkotlinx/coroutines/internal/Removed;", "", "toString", "()Ljava/lang/String;", "condAdd", "", "tryCondAddNext", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;)I", "prev", "validateNode$kotlinx_coroutines_core", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V", "validateNode", "isRemoved", "", "getNext", "()Ljava/lang/Object;", "getNextNode", "nextNode", "getPrevNode", "prevNode", "AbstractAtomicDesc", "AddLastDesc", "CondAddOp", "PrepareOp", "RemoveFirstDesc", "kotlinx-coroutines-core"}, k = 1, mv = {1, 6, 0}, xi = 48)
/* compiled from: LockFreeLinkedList.kt */
public class LockFreeLinkedListNode {
static final /* synthetic */ AtomicReferenceFieldUpdater _next$FU;
static final /* synthetic */ AtomicReferenceFieldUpdater _prev$FU;
private static final /* synthetic */ AtomicReferenceFieldUpdater _removedRef$FU;
volatile /* synthetic */ Object _next = this;
volatile /* synthetic */ Object _prev = this;
private volatile /* synthetic */ Object _removedRef = null;
static {
Class<LockFreeLinkedListNode> cls = LockFreeLinkedListNode.class;
_next$FU = AtomicReferenceFieldUpdater.newUpdater(cls, Object.class, "_next");
_prev$FU = AtomicReferenceFieldUpdater.newUpdater(cls, Object.class, "_prev");
_removedRef$FU = AtomicReferenceFieldUpdater.newUpdater(cls, Object.class, "_removedRef");
}
/* access modifiers changed from: private */
public final Removed removed() {
Removed removed = (Removed) this._removedRef;
if (removed != null) {
return removed;
}
Removed removed2 = new Removed(this);
_removedRef$FU.lazySet(this, removed2);
return removed2;
}
@Metadata(d1 = {"\u0000\"\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0010\u0002\n\u0002\b\u0002\n\u0002\u0010\u0000\n\u0000\b!\u0018\u00002\f\u0012\b\u0012\u00060\u0002j\u0002`\u00030\u0001B\u0011\u0012\n\u0010\u0004\u001a\u00060\u0002j\u0002`\u0003¢\u0006\u0002\u0010\u0005J\u001e\u0010\u0007\u001a\u00020\b2\n\u0010\t\u001a\u00060\u0002j\u0002`\u00032\b\u0010\n\u001a\u0004\u0018\u00010\u000bH\u0016R\u0014\u0010\u0004\u001a\u00060\u0002j\u0002`\u00038\u0006X\u0004¢\u0006\u0002\n\u0000R\u001a\u0010\u0006\u001a\n\u0018\u00010\u0002j\u0004\u0018\u0001`\u00038\u0006@\u0006X\u000e¢\u0006\u0002\n\u0000¨\u0006\f"}, d2 = {"Lkotlinx/coroutines/internal/LockFreeLinkedListNode$CondAddOp;", "Lkotlinx/coroutines/internal/AtomicOp;", "Lkotlinx/coroutines/internal/LockFreeLinkedListNode;", "Lkotlinx/coroutines/internal/Node;", "newNode", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V", "oldNext", "complete", "", "affected", "failure", "", "kotlinx-coroutines-core"}, k = 1, mv = {1, 6, 0}, xi = 48)
/* compiled from: LockFreeLinkedList.kt */
public static abstract class CondAddOp extends AtomicOp<LockFreeLinkedListNode> {
public final LockFreeLinkedListNode newNode;
public LockFreeLinkedListNode oldNext;
public CondAddOp(LockFreeLinkedListNode lockFreeLinkedListNode) {
this.newNode = lockFreeLinkedListNode;
}
public void complete(LockFreeLinkedListNode lockFreeLinkedListNode, Object obj) {
boolean z = obj == null;
LockFreeLinkedListNode lockFreeLinkedListNode2 = z ? this.newNode : this.oldNext;
if (lockFreeLinkedListNode2 != null && AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(LockFreeLinkedListNode._next$FU, lockFreeLinkedListNode, this, lockFreeLinkedListNode2) && z) {
LockFreeLinkedListNode lockFreeLinkedListNode3 = this.newNode;
LockFreeLinkedListNode lockFreeLinkedListNode4 = this.oldNext;
Intrinsics.checkNotNull(lockFreeLinkedListNode4);
lockFreeLinkedListNode3.finishAdd(lockFreeLinkedListNode4);
}
}
}
public final CondAddOp makeCondAddOp(LockFreeLinkedListNode lockFreeLinkedListNode, Function0<Boolean> function0) {
return new LockFreeLinkedListNode$makeCondAddOp$1(lockFreeLinkedListNode, function0);
}
public boolean isRemoved() {
return getNext() instanceof Removed;
}
public final LockFreeLinkedListNode getNextNode() {
return LockFreeLinkedListKt.unwrap(getNext());
}
public final LockFreeLinkedListNode getPrevNode() {
LockFreeLinkedListNode correctPrev = correctPrev((OpDescriptor) null);
return correctPrev == null ? findPrevNonRemoved((LockFreeLinkedListNode) this._prev) : correctPrev;
}
private final LockFreeLinkedListNode findPrevNonRemoved(LockFreeLinkedListNode lockFreeLinkedListNode) {
while (lockFreeLinkedListNode.isRemoved()) {
lockFreeLinkedListNode = (LockFreeLinkedListNode) lockFreeLinkedListNode._prev;
}
return lockFreeLinkedListNode;
}
public final boolean addOneIfEmpty(LockFreeLinkedListNode lockFreeLinkedListNode) {
_prev$FU.lazySet(lockFreeLinkedListNode, this);
_next$FU.lazySet(lockFreeLinkedListNode, this);
while (getNext() == this) {
if (AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(_next$FU, this, this, lockFreeLinkedListNode)) {
lockFreeLinkedListNode.finishAdd(this);
return true;
}
}
return false;
}
public final void addLast(LockFreeLinkedListNode lockFreeLinkedListNode) {
do {
} while (!getPrevNode().addNext(lockFreeLinkedListNode, this));
}
public final <T extends LockFreeLinkedListNode> AddLastDesc<T> describeAddLast(T t) {
return new AddLastDesc<>(this, t);
}
public final boolean addLastIfPrev(LockFreeLinkedListNode lockFreeLinkedListNode, Function1<? super LockFreeLinkedListNode, Boolean> function1) {
LockFreeLinkedListNode prevNode;
do {
prevNode = getPrevNode();
if (!function1.invoke(prevNode).booleanValue()) {
return false;
}
} while (!prevNode.addNext(lockFreeLinkedListNode, this));
return true;
}
public final boolean addNext(LockFreeLinkedListNode lockFreeLinkedListNode, LockFreeLinkedListNode lockFreeLinkedListNode2) {
_prev$FU.lazySet(lockFreeLinkedListNode, this);
AtomicReferenceFieldUpdater atomicReferenceFieldUpdater = _next$FU;
atomicReferenceFieldUpdater.lazySet(lockFreeLinkedListNode, lockFreeLinkedListNode2);
if (!AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(atomicReferenceFieldUpdater, this, lockFreeLinkedListNode2, lockFreeLinkedListNode)) {
return false;
}
lockFreeLinkedListNode.finishAdd(lockFreeLinkedListNode2);
return true;
}
public final int tryCondAddNext(LockFreeLinkedListNode lockFreeLinkedListNode, LockFreeLinkedListNode lockFreeLinkedListNode2, CondAddOp condAddOp) {
_prev$FU.lazySet(lockFreeLinkedListNode, this);
AtomicReferenceFieldUpdater atomicReferenceFieldUpdater = _next$FU;
atomicReferenceFieldUpdater.lazySet(lockFreeLinkedListNode, lockFreeLinkedListNode2);
condAddOp.oldNext = lockFreeLinkedListNode2;
if (!AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(atomicReferenceFieldUpdater, this, lockFreeLinkedListNode2, condAddOp)) {
return 0;
}
return condAddOp.perform(this) == null ? 1 : 2;
}
public boolean remove() {
return removeOrNext() == null;
}
public final LockFreeLinkedListNode removeOrNext() {
Object next;
LockFreeLinkedListNode lockFreeLinkedListNode;
do {
next = getNext();
if (next instanceof Removed) {
return ((Removed) next).ref;
}
if (next == this) {
return (LockFreeLinkedListNode) next;
}
lockFreeLinkedListNode = (LockFreeLinkedListNode) next;
} while (!AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(_next$FU, this, next, lockFreeLinkedListNode.removed()));
lockFreeLinkedListNode.correctPrev((OpDescriptor) null);
return null;
}
public final void helpRemove() {
((Removed) getNext()).ref.helpRemovePrev();
}
public final void helpRemovePrev() {
LockFreeLinkedListNode lockFreeLinkedListNode = this;
while (true) {
Object next = lockFreeLinkedListNode.getNext();
if (!(next instanceof Removed)) {
lockFreeLinkedListNode.correctPrev((OpDescriptor) null);
return;
}
lockFreeLinkedListNode = ((Removed) next).ref;
}
}
public final LockFreeLinkedListNode removeFirstOrNull() {
while (true) {
LockFreeLinkedListNode lockFreeLinkedListNode = (LockFreeLinkedListNode) getNext();
if (lockFreeLinkedListNode == this) {
return null;
}
if (lockFreeLinkedListNode.remove()) {
return lockFreeLinkedListNode;
}
lockFreeLinkedListNode.helpRemove();
}
}
public final RemoveFirstDesc<LockFreeLinkedListNode> describeRemoveFirst() {
return new RemoveFirstDesc<>(this);
}
public final /* synthetic */ <T> T removeFirstIfIsInstanceOfOrPeekIf(Function1<? super T, Boolean> function1) {
LockFreeLinkedListNode removeOrNext;
while (true) {
T t = (LockFreeLinkedListNode) getNext();
if (t == this) {
return null;
}
Intrinsics.reifiedOperationMarker(3, "T");
if (!(t instanceof Object)) {
return null;
}
if ((function1.invoke(t).booleanValue() && !t.isRemoved()) || (removeOrNext = t.removeOrNext()) == null) {
return t;
}
removeOrNext.helpRemovePrev();
}
}
@Metadata(d1 = {"\u00006\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0007\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010\u0000\n\u0002\u0010\u000b\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\f\n\u0002\u0018\u0002\b\u0016\u0018\u0000*\f\b\u0000\u0010\u0003*\u00060\u0001j\u0002`\u00022\u00020!B\u001b\u0012\n\u0010\u0004\u001a\u00060\u0001j\u0002`\u0002\u0012\u0006\u0010\u0005\u001a\u00028\u0000¢\u0006\u0004\b\u0006\u0010\u0007J'\u0010\u000b\u001a\u00020\n2\n\u0010\b\u001a\u00060\u0001j\u0002`\u00022\n\u0010\t\u001a\u00060\u0001j\u0002`\u0002H\u0014¢\u0006\u0004\b\u000b\u0010\u0007J\u0017\u0010\u000e\u001a\u00020\n2\u0006\u0010\r\u001a\u00020\fH\u0016¢\u0006\u0004\b\u000e\u0010\u000fJ#\u0010\u0012\u001a\u00020\u00112\n\u0010\b\u001a\u00060\u0001j\u0002`\u00022\u0006\u0010\t\u001a\u00020\u0010H\u0014¢\u0006\u0004\b\u0012\u0010\u0013J\u001f\u0010\u0016\u001a\n\u0018\u00010\u0001j\u0004\u0018\u0001`\u00022\u0006\u0010\u0015\u001a\u00020\u0014H\u0004¢\u0006\u0004\b\u0016\u0010\u0017J'\u0010\u0018\u001a\u00020\u00102\n\u0010\b\u001a\u00060\u0001j\u0002`\u00022\n\u0010\t\u001a\u00060\u0001j\u0002`\u0002H\u0016¢\u0006\u0004\b\u0018\u0010\u0019R\u001c\u0010\u001c\u001a\n\u0018\u00010\u0001j\u0004\u0018\u0001`\u00028DX\u0004¢\u0006\u0006\u001a\u0004\b\u001a\u0010\u001bR\u0014\u0010\u0005\u001a\u00028\u00008\u0006X\u0004¢\u0006\u0006\n\u0004\b\u0005\u0010\u001dR\u0018\u0010\u001f\u001a\u00060\u0001j\u0002`\u00028DX\u0004¢\u0006\u0006\u001a\u0004\b\u001e\u0010\u001bR\u0018\u0010\u0004\u001a\u00060\u0001j\u0002`\u00028\u0006X\u0004¢\u0006\u0006\n\u0004\b\u0004\u0010\u001d¨\u0006 "}, d2 = {"Lkotlinx/coroutines/internal/LockFreeLinkedListNode$AddLastDesc;", "Lkotlinx/coroutines/internal/LockFreeLinkedListNode;", "Lkotlinx/coroutines/internal/Node;", "T", "queue", "node", "<init>", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V", "affected", "next", "", "finishOnSuccess", "Lkotlinx/coroutines/internal/LockFreeLinkedListNode$PrepareOp;", "prepareOp", "finishPrepare", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode$PrepareOp;)V", "", "", "retry", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Ljava/lang/Object;)Z", "Lkotlinx/coroutines/internal/OpDescriptor;", "op", "takeAffectedNode", "(Lkotlinx/coroutines/internal/OpDescriptor;)Lkotlinx/coroutines/internal/LockFreeLinkedListNode;", "updatedNext", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Ljava/lang/Object;", "getAffectedNode", "()Lkotlinx/coroutines/internal/LockFreeLinkedListNode;", "affectedNode", "Lkotlinx/coroutines/internal/LockFreeLinkedListNode;", "getOriginalNext", "originalNext", "kotlinx-coroutines-core", "Lkotlinx/coroutines/internal/LockFreeLinkedListNode$AbstractAtomicDesc;"}, k = 1, mv = {1, 6, 0}, xi = 48)
/* compiled from: LockFreeLinkedList.kt */
public static class AddLastDesc<T extends LockFreeLinkedListNode> extends AbstractAtomicDesc {
private static final /* synthetic */ AtomicReferenceFieldUpdater _affectedNode$FU = AtomicReferenceFieldUpdater.newUpdater(AddLastDesc.class, Object.class, "_affectedNode");
private volatile /* synthetic */ Object _affectedNode;
public final T node;
public final LockFreeLinkedListNode queue;
public AddLastDesc(LockFreeLinkedListNode lockFreeLinkedListNode, T t) {
this.queue = lockFreeLinkedListNode;
this.node = t;
if (DebugKt.getASSERTIONS_ENABLED()) {
if (!(t._next == t && t._prev == t)) {
throw new AssertionError();
}
}
this._affectedNode = null;
}
/* access modifiers changed from: protected */
public final LockFreeLinkedListNode takeAffectedNode(OpDescriptor opDescriptor) {
return this.queue.correctPrev(opDescriptor);
}
/* access modifiers changed from: protected */
public final LockFreeLinkedListNode getAffectedNode() {
return (LockFreeLinkedListNode) this._affectedNode;
}
/* access modifiers changed from: protected */
public final LockFreeLinkedListNode getOriginalNext() {
return this.queue;
}
/* access modifiers changed from: protected */
public boolean retry(LockFreeLinkedListNode lockFreeLinkedListNode, Object obj) {
return obj != this.queue;
}
public void finishPrepare(PrepareOp prepareOp) {
AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(_affectedNode$FU, this, (Object) null, prepareOp.affected);
}
public Object updatedNext(LockFreeLinkedListNode lockFreeLinkedListNode, LockFreeLinkedListNode lockFreeLinkedListNode2) {
AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(LockFreeLinkedListNode._prev$FU, this.node, this.node, lockFreeLinkedListNode);
AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(LockFreeLinkedListNode._next$FU, this.node, this.node, this.queue);
return this.node;
}
/* access modifiers changed from: protected */
public void finishOnSuccess(LockFreeLinkedListNode lockFreeLinkedListNode, LockFreeLinkedListNode lockFreeLinkedListNode2) {
this.node.finishAdd(this.queue);
}
}
@Metadata(d1 = {"\u0000>\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0010\u0000\n\u0002\b\u0003\n\u0002\u0010\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010\u000b\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0011\n\u0002\u0018\u0002\b\u0016\u0018\u0000*\u0004\b\u0000\u0010\u00012\u00020(B\u0013\u0012\n\u0010\u0004\u001a\u00060\u0002j\u0002`\u0003¢\u0006\u0004\b\u0005\u0010\u0006J\u001d\u0010\t\u001a\u0004\u0018\u00010\b2\n\u0010\u0007\u001a\u00060\u0002j\u0002`\u0003H\u0014¢\u0006\u0004\b\t\u0010\nJ'\u0010\r\u001a\u00020\f2\n\u0010\u0007\u001a\u00060\u0002j\u0002`\u00032\n\u0010\u000b\u001a\u00060\u0002j\u0002`\u0003H\u0004¢\u0006\u0004\b\r\u0010\u000eJ\u0017\u0010\u0011\u001a\u00020\f2\u0006\u0010\u0010\u001a\u00020\u000fH\u0016¢\u0006\u0004\b\u0011\u0010\u0012J#\u0010\u0014\u001a\u00020\u00132\n\u0010\u0007\u001a\u00060\u0002j\u0002`\u00032\u0006\u0010\u000b\u001a\u00020\bH\u0004¢\u0006\u0004\b\u0014\u0010\u0015J\u001f\u0010\u0018\u001a\n\u0018\u00010\u0002j\u0004\u0018\u0001`\u00032\u0006\u0010\u0017\u001a\u00020\u0016H\u0004¢\u0006\u0004\b\u0018\u0010\u0019J%\u0010\u001a\u001a\u00020\b2\n\u0010\u0007\u001a\u00060\u0002j\u0002`\u00032\n\u0010\u000b\u001a\u00060\u0002j\u0002`\u0003¢\u0006\u0004\b\u001a\u0010\u001bR\u001c\u0010\u001e\u001a\n\u0018\u00010\u0002j\u0004\u0018\u0001`\u00038DX\u0004¢\u0006\u0006\u001a\u0004\b\u001c\u0010\u001dR\u001c\u0010 \u001a\n\u0018\u00010\u0002j\u0004\u0018\u0001`\u00038DX\u0004¢\u0006\u0006\u001a\u0004\b\u001f\u0010\u001dR\u0018\u0010\u0004\u001a\u00060\u0002j\u0002`\u00038\u0006X\u0004¢\u0006\u0006\n\u0004\b\u0004\u0010!R\u0017\u0010&\u001a\u00028\u00008F¢\u0006\f\u0012\u0004\b$\u0010%\u001a\u0004\b\"\u0010#¨\u0006'"}, d2 = {"Lkotlinx/coroutines/internal/LockFreeLinkedListNode$RemoveFirstDesc;", "T", "Lkotlinx/coroutines/internal/LockFreeLinkedListNode;", "Lkotlinx/coroutines/internal/Node;", "queue", "<init>", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V", "affected", "", "failure", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Ljava/lang/Object;", "next", "", "finishOnSuccess", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)V", "Lkotlinx/coroutines/internal/LockFreeLinkedListNode$PrepareOp;", "prepareOp", "finishPrepare", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode$PrepareOp;)V", "", "retry", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Ljava/lang/Object;)Z", "Lkotlinx/coroutines/internal/OpDescriptor;", "op", "takeAffectedNode", "(Lkotlinx/coroutines/internal/OpDescriptor;)Lkotlinx/coroutines/internal/LockFreeLinkedListNode;", "updatedNext", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;)Ljava/lang/Object;", "getAffectedNode", "()Lkotlinx/coroutines/internal/LockFreeLinkedListNode;", "affectedNode", "getOriginalNext", "originalNext", "Lkotlinx/coroutines/internal/LockFreeLinkedListNode;", "getResult", "()Ljava/lang/Object;", "getResult$annotations", "()V", "result", "kotlinx-coroutines-core", "Lkotlinx/coroutines/internal/LockFreeLinkedListNode$AbstractAtomicDesc;"}, k = 1, mv = {1, 6, 0}, xi = 48)
/* compiled from: LockFreeLinkedList.kt */
public static class RemoveFirstDesc<T> extends AbstractAtomicDesc {
private static final /* synthetic */ AtomicReferenceFieldUpdater _affectedNode$FU;
private static final /* synthetic */ AtomicReferenceFieldUpdater _originalNext$FU;
private volatile /* synthetic */ Object _affectedNode = null;
private volatile /* synthetic */ Object _originalNext = null;
public final LockFreeLinkedListNode queue;
static {
Class<RemoveFirstDesc> cls = RemoveFirstDesc.class;
_affectedNode$FU = AtomicReferenceFieldUpdater.newUpdater(cls, Object.class, "_affectedNode");
_originalNext$FU = AtomicReferenceFieldUpdater.newUpdater(cls, Object.class, "_originalNext");
}
public static /* synthetic */ void getResult$annotations() {
}
public RemoveFirstDesc(LockFreeLinkedListNode lockFreeLinkedListNode) {
this.queue = lockFreeLinkedListNode;
}
public final T getResult() {
T affectedNode = getAffectedNode();
Intrinsics.checkNotNull(affectedNode);
return (Object) affectedNode;
}
/* access modifiers changed from: protected */
public final LockFreeLinkedListNode takeAffectedNode(OpDescriptor opDescriptor) {
LockFreeLinkedListNode lockFreeLinkedListNode = this.queue;
while (true) {
Object obj = lockFreeLinkedListNode._next;
if (!(obj instanceof OpDescriptor)) {
return (LockFreeLinkedListNode) obj;
}
OpDescriptor opDescriptor2 = (OpDescriptor) obj;
if (opDescriptor.isEarlierThan(opDescriptor2)) {
return null;
}
opDescriptor2.perform(this.queue);
}
}
/* access modifiers changed from: protected */
public final LockFreeLinkedListNode getAffectedNode() {
return (LockFreeLinkedListNode) this._affectedNode;
}
/* access modifiers changed from: protected */
public final LockFreeLinkedListNode getOriginalNext() {
return (LockFreeLinkedListNode) this._originalNext;
}
/* access modifiers changed from: protected */
public Object failure(LockFreeLinkedListNode lockFreeLinkedListNode) {
if (lockFreeLinkedListNode == this.queue) {
return LockFreeLinkedListKt.getLIST_EMPTY();
}
return null;
}
/* access modifiers changed from: protected */
public final boolean retry(LockFreeLinkedListNode lockFreeLinkedListNode, Object obj) {
if (!(obj instanceof Removed)) {
return false;
}
((Removed) obj).ref.helpRemovePrev();
return true;
}
public void finishPrepare(PrepareOp prepareOp) {
AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(_affectedNode$FU, this, (Object) null, prepareOp.affected);
AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(_originalNext$FU, this, (Object) null, prepareOp.next);
}
public final Object updatedNext(LockFreeLinkedListNode lockFreeLinkedListNode, LockFreeLinkedListNode lockFreeLinkedListNode2) {
return lockFreeLinkedListNode2.removed();
}
/* access modifiers changed from: protected */
public final void finishOnSuccess(LockFreeLinkedListNode lockFreeLinkedListNode, LockFreeLinkedListNode lockFreeLinkedListNode2) {
LockFreeLinkedListNode unused = lockFreeLinkedListNode2.correctPrev((OpDescriptor) null);
}
}
@Metadata(d1 = {"\u00008\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0000\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\b\u0003\n\u0002\u0010\u0002\n\u0000\n\u0002\u0010\u0000\n\u0000\n\u0002\u0010\u000e\n\u0000\u0018\u00002\u00020\u0001B%\u0012\n\u0010\u0002\u001a\u00060\u0003j\u0002`\u0004\u0012\n\u0010\u0005\u001a\u00060\u0003j\u0002`\u0004\u0012\u0006\u0010\u0006\u001a\u00020\u0007¢\u0006\u0002\u0010\bJ\u0006\u0010\r\u001a\u00020\u000eJ\u0014\u0010\u000f\u001a\u0004\u0018\u00010\u00102\b\u0010\u0002\u001a\u0004\u0018\u00010\u0010H\u0016J\b\u0010\u0011\u001a\u00020\u0012H\u0016R\u0014\u0010\u0002\u001a\u00060\u0003j\u0002`\u00048\u0006X\u0004¢\u0006\u0002\n\u0000R\u0018\u0010\t\u001a\u0006\u0012\u0002\b\u00030\n8VX\u0004¢\u0006\u0006\u001a\u0004\b\u000b\u0010\fR\u0010\u0010\u0006\u001a\u00020\u00078\u0006X\u0004¢\u0006\u0002\n\u0000R\u0014\u0010\u0005\u001a\u00060\u0003j\u0002`\u00048\u0006X\u0004¢\u0006\u0002\n\u0000¨\u0006\u0013"}, d2 = {"Lkotlinx/coroutines/internal/LockFreeLinkedListNode$PrepareOp;", "Lkotlinx/coroutines/internal/OpDescriptor;", "affected", "Lkotlinx/coroutines/internal/LockFreeLinkedListNode;", "Lkotlinx/coroutines/internal/Node;", "next", "desc", "Lkotlinx/coroutines/internal/LockFreeLinkedListNode$AbstractAtomicDesc;", "(Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode;Lkotlinx/coroutines/internal/LockFreeLinkedListNode$AbstractAtomicDesc;)V", "atomicOp", "Lkotlinx/coroutines/internal/AtomicOp;", "getAtomicOp", "()Lkotlinx/coroutines/internal/AtomicOp;", "finishPrepare", "", "perform", "", "toString", "", "kotlinx-coroutines-core"}, k = 1, mv = {1, 6, 0}, xi = 48)
/* compiled from: LockFreeLinkedList.kt */
public static final class PrepareOp extends OpDescriptor {
public final LockFreeLinkedListNode affected;
public final AbstractAtomicDesc desc;
public final LockFreeLinkedListNode next;
public PrepareOp(LockFreeLinkedListNode lockFreeLinkedListNode, LockFreeLinkedListNode lockFreeLinkedListNode2, AbstractAtomicDesc abstractAtomicDesc) {
this.affected = lockFreeLinkedListNode;
this.next = lockFreeLinkedListNode2;
this.desc = abstractAtomicDesc;
}
public AtomicOp<?> getAtomicOp() {
return this.desc.getAtomicOp();
}
public Object perform(Object obj) {
Object obj2;
Object obj3;
if (DebugKt.getASSERTIONS_ENABLED()) {
if (!(obj == this.affected)) {
throw new AssertionError();
}
}
Objects.requireNonNull(obj, "null cannot be cast to non-null type kotlinx.coroutines.internal.LockFreeLinkedListNode{ kotlinx.coroutines.internal.LockFreeLinkedListKt.Node }");
LockFreeLinkedListNode lockFreeLinkedListNode = (LockFreeLinkedListNode) obj;
Object onPrepare = this.desc.onPrepare(this);
if (onPrepare == LockFreeLinkedList_commonKt.REMOVE_PREPARED) {
LockFreeLinkedListNode lockFreeLinkedListNode2 = this.next;
if (AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(LockFreeLinkedListNode._next$FU, lockFreeLinkedListNode, this, lockFreeLinkedListNode2.removed())) {
this.desc.onRemoved(lockFreeLinkedListNode);
LockFreeLinkedListNode unused = lockFreeLinkedListNode2.correctPrev((OpDescriptor) null);
}
return LockFreeLinkedList_commonKt.REMOVE_PREPARED;
}
if (onPrepare != null) {
obj2 = getAtomicOp().decide(onPrepare);
} else {
obj2 = getAtomicOp().getConsensus();
}
if (obj2 == AtomicKt.NO_DECISION) {
obj3 = getAtomicOp();
} else if (obj2 == null) {
obj3 = this.desc.updatedNext(lockFreeLinkedListNode, this.next);
} else {
obj3 = this.next;
}
AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(LockFreeLinkedListNode._next$FU, lockFreeLinkedListNode, this, obj3);
return null;
}
public final void finishPrepare() {
this.desc.finishPrepare(this);
}
public String toString() {
return "PrepareOp(op=" + getAtomicOp() + ')';
}
}
@Metadata(d1 = {"\u0000B\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0002\n\u0002\u0018\u0002\n\u0002\u0018\u0002\n\u0002\b\u0005\n\u0002\u0010\u0002\n\u0000\n\u0002\u0018\u0002\n\u0000\n\u0002\u0010\u0000\n\u0002\b\u0005\n\u0002\u0018\u0002\n\u0002\b\u0004\n\u0002\u0010\u000b\n\u0000\n\u0002\u0018\u0002\n\u0002\b\u0002\b&\u0018\u00002\u00020\u0001B\u0005¢\u0006\u0002\u0010\u0002J\u001c\u0010\n\u001a\u00020\u000b2\n\u0010\f\u001a\u0006\u0012\u0002\b\u00030\r2\b\u0010\u000e\u001a\u0004\u0018\u00010\u000fJ\u0016\u0010\u000e\u001a\u0004\u0018\u00010\u000f2\n\u0010\u0010\u001a\u00060\u0004j\u0002`\u0005H\u0014J \u0010\u0011\u001a\u00020\u000b2\n\u0010\u0010\u001a\u00060\u0004j\u0002`\u00052\n\u0010\u0012\u001a\u00060\u0004j\u0002`\u0005H$J\u0010\u0010\u0013\u001a\u00020\u000b2\u0006\u0010\u0014\u001a\u00020\u0015H&J\u0012\u0010\u0016\u001a\u0004\u0018\u00010\u000f2\u0006\u0010\u0014\u001a\u00020\u0015H\u0016J\u0014\u0010\u0017\u001a\u00020\u000b2\n\u0010\u0010\u001a\u00060\u0004j\u0002`\u0005H\u0016J\u0014\u0010\u0018\u001a\u0004\u0018\u00010\u000f2\n\u0010\f\u001a\u0006\u0012\u0002\b\u00030\rJ\u001c\u0010\u0019\u001a\u00020\u001a2\n\u0010\u0010\u001a\u00060\u0004j\u0002`\u00052\u0006\u0010\u0012\u001a\u00020\u000fH\u0014J\u0018\u0010\u001b\u001a\n\u0018\u00010\u0004j\u0004\u0018\u0001`\u00052\u0006\u0010\f\u001a\u00020\u001cH\u0014J \u0010\u001d\u001a\u00020\u000f2\n\u0010\u0010\u001a\u00060\u0004j\u0002`\u00052\n\u0010\u0012\u001a\u00060\u0004j\u0002`\u0005H&R\u001a\u0010\u0003\u001a\n\u0018\u00010\u0004j\u0004\u0018\u0001`\u0005X¤\u0004¢\u0006\u0006\u001a\u0004\b\u0006\u0010\u0007R\u001a\u0010\b\u001a\n\u0018\u00010\u0004j\u0004\u0018\u0001`\u0005X¤\u0004¢\u0006\u0006\u001a\u0004\b\t\u0010\u0007¨\u0006\u001e"}, d2 = {"Lkotlinx/coroutines/internal/LockFreeLinkedListNode$AbstractAtomicDesc;", "Lkotlinx/coroutines/internal/AtomicDesc;", "()V", "affectedNode", "Lkotlinx/coroutines/internal/LockFreeLinkedListNode;", "Lkotlinx/coroutines/internal/Node;", "getAffectedNode", "()Lkotlinx/coroutines/internal/LockFreeLinkedListNode;", "originalNext", "getOriginalNext", "complete", "", "op", "Lkotlinx/coroutines/internal/AtomicOp;", "failure", "", "affected", "finishOnSuccess", "next", "finishPrepare", "prepareOp", "Lkotlinx/coroutines/internal/LockFreeLinkedListNode$PrepareOp;", "onPrepare", "onRemoved", "prepare", "retry", "", "takeAffectedNode", "Lkotlinx/coroutines/internal/OpDescriptor;", "updatedNext", "kotlinx-coroutines-core"}, k = 1, mv = {1, 6, 0}, xi = 48)
/* compiled from: LockFreeLinkedList.kt */
public static abstract class AbstractAtomicDesc extends AtomicDesc {
/* access modifiers changed from: protected */
public Object failure(LockFreeLinkedListNode lockFreeLinkedListNode) {
return null;
}
/* access modifiers changed from: protected */
public abstract void finishOnSuccess(LockFreeLinkedListNode lockFreeLinkedListNode, LockFreeLinkedListNode lockFreeLinkedListNode2);
public abstract void finishPrepare(PrepareOp prepareOp);
/* access modifiers changed from: protected */
public abstract LockFreeLinkedListNode getAffectedNode();
/* access modifiers changed from: protected */
public abstract LockFreeLinkedListNode getOriginalNext();
public void onRemoved(LockFreeLinkedListNode lockFreeLinkedListNode) {
}
/* access modifiers changed from: protected */
public boolean retry(LockFreeLinkedListNode lockFreeLinkedListNode, Object obj) {
return false;
}
public abstract Object updatedNext(LockFreeLinkedListNode lockFreeLinkedListNode, LockFreeLinkedListNode lockFreeLinkedListNode2);
/* access modifiers changed from: protected */
public LockFreeLinkedListNode takeAffectedNode(OpDescriptor opDescriptor) {
LockFreeLinkedListNode affectedNode = getAffectedNode();
Intrinsics.checkNotNull(affectedNode);
return affectedNode;
}
public Object onPrepare(PrepareOp prepareOp) {
finishPrepare(prepareOp);
return null;
}
public final Object prepare(AtomicOp<?> atomicOp) {
while (true) {
LockFreeLinkedListNode takeAffectedNode = takeAffectedNode(atomicOp);
if (takeAffectedNode == null) {
return AtomicKt.RETRY_ATOMIC;
}
Object obj = takeAffectedNode._next;
if (obj == atomicOp || atomicOp.isDecided()) {
return null;
}
if (obj instanceof OpDescriptor) {
OpDescriptor opDescriptor = (OpDescriptor) obj;
if (atomicOp.isEarlierThan(opDescriptor)) {
return AtomicKt.RETRY_ATOMIC;
}
opDescriptor.perform(takeAffectedNode);
} else {
Object failure = failure(takeAffectedNode);
if (failure != null) {
return failure;
}
if (retry(takeAffectedNode, obj)) {
continue;
} else {
PrepareOp prepareOp = new PrepareOp(takeAffectedNode, (LockFreeLinkedListNode) obj, this);
if (AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(LockFreeLinkedListNode._next$FU, takeAffectedNode, obj, prepareOp)) {
try {
Object perform = prepareOp.perform(takeAffectedNode);
if (perform != LockFreeLinkedList_commonKt.REMOVE_PREPARED) {
if (DebugKt.getASSERTIONS_ENABLED()) {
if (!(perform == null)) {
throw new AssertionError();
}
}
return null;
}
} catch (Throwable th) {
AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(LockFreeLinkedListNode._next$FU, takeAffectedNode, prepareOp, obj);
throw th;
}
} else {
continue;
}
}
}
}
}
public final void complete(AtomicOp<?> atomicOp, Object obj) {
boolean z = obj == null;
LockFreeLinkedListNode affectedNode = getAffectedNode();
if (affectedNode == null) {
AbstractAtomicDesc abstractAtomicDesc = this;
if (DebugKt.getASSERTIONS_ENABLED() && !(!z)) {
throw new AssertionError();
}
return;
}
LockFreeLinkedListNode originalNext = getOriginalNext();
if (originalNext == null) {
AbstractAtomicDesc abstractAtomicDesc2 = this;
if (DebugKt.getASSERTIONS_ENABLED() && !(!z)) {
throw new AssertionError();
}
return;
}
if (AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(LockFreeLinkedListNode._next$FU, affectedNode, atomicOp, z ? updatedNext(affectedNode, originalNext) : originalNext) && z) {
finishOnSuccess(affectedNode, originalNext);
}
}
}
/* access modifiers changed from: protected */
public LockFreeLinkedListNode nextIfRemoved() {
Object next = getNext();
Removed removed = next instanceof Removed ? (Removed) next : null;
if (removed == null) {
return null;
}
return removed.ref;
}
/* JADX DEBUG: Multi-variable search result rejected for TypeSearchVarInfo{r4v0, resolved type: java.lang.Object} */
/* JADX DEBUG: Multi-variable search result rejected for TypeSearchVarInfo{r0v3, resolved type: kotlinx.coroutines.internal.OpDescriptor} */
/* JADX DEBUG: Multi-variable search result rejected for TypeSearchVarInfo{r3v3, resolved type: kotlinx.coroutines.internal.LockFreeLinkedListNode} */
/* access modifiers changed from: private */
/* JADX WARNING: Code restructure failed: missing block: B:25:0x0048, code lost:
if (androidx.concurrent.futures.AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(_next$FU, r3, r2, ((kotlinx.coroutines.internal.Removed) r4).ref) != false) goto L_0x004b;
*/
/* JADX WARNING: Multi-variable type inference failed */
/* Code decompiled incorrectly, please refer to instructions dump. */
public final kotlinx.coroutines.internal.LockFreeLinkedListNode correctPrev(kotlinx.coroutines.internal.OpDescriptor r8) {
/*
r7 = this;
L_0x0000:
java.lang.Object r0 = r7._prev
kotlinx.coroutines.internal.LockFreeLinkedListNode r0 = (kotlinx.coroutines.internal.LockFreeLinkedListNode) r0
r1 = 0
r2 = r0
L_0x0006:
r3 = r1
L_0x0007:
java.lang.Object r4 = r2._next
if (r4 != r7) goto L_0x0018
if (r0 != r2) goto L_0x000e
return r2
L_0x000e:
java.util.concurrent.atomic.AtomicReferenceFieldUpdater r1 = _prev$FU
boolean r0 = androidx.concurrent.futures.AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(r1, r7, r0, r2)
if (r0 != 0) goto L_0x0017
goto L_0x0000
L_0x0017:
return r2
L_0x0018:
boolean r5 = r7.isRemoved()
if (r5 == 0) goto L_0x001f
return r1
L_0x001f:
if (r4 != r8) goto L_0x0022
return r2
L_0x0022:
boolean r5 = r4 instanceof kotlinx.coroutines.internal.OpDescriptor
if (r5 == 0) goto L_0x0038
if (r8 == 0) goto L_0x0032
r0 = r4
kotlinx.coroutines.internal.OpDescriptor r0 = (kotlinx.coroutines.internal.OpDescriptor) r0
boolean r0 = r8.isEarlierThan(r0)
if (r0 == 0) goto L_0x0032
return r1
L_0x0032:
kotlinx.coroutines.internal.OpDescriptor r4 = (kotlinx.coroutines.internal.OpDescriptor) r4
r4.perform(r2)
goto L_0x0000
L_0x0038:
boolean r5 = r4 instanceof kotlinx.coroutines.internal.Removed
if (r5 == 0) goto L_0x0052
if (r3 == 0) goto L_0x004d
java.util.concurrent.atomic.AtomicReferenceFieldUpdater r5 = _next$FU
kotlinx.coroutines.internal.Removed r4 = (kotlinx.coroutines.internal.Removed) r4
kotlinx.coroutines.internal.LockFreeLinkedListNode r4 = r4.ref
boolean r2 = androidx.concurrent.futures.AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(r5, r3, r2, r4)
if (r2 != 0) goto L_0x004b
goto L_0x0000
L_0x004b:
r2 = r3
goto L_0x0006
L_0x004d:
java.lang.Object r2 = r2._prev
kotlinx.coroutines.internal.LockFreeLinkedListNode r2 = (kotlinx.coroutines.internal.LockFreeLinkedListNode) r2
goto L_0x0007
L_0x0052:
r3 = r4
kotlinx.coroutines.internal.LockFreeLinkedListNode r3 = (kotlinx.coroutines.internal.LockFreeLinkedListNode) r3
r6 = r3
r3 = r2
r2 = r6
goto L_0x0007
*/
throw new UnsupportedOperationException("Method not decompiled: kotlinx.coroutines.internal.LockFreeLinkedListNode.correctPrev(kotlinx.coroutines.internal.OpDescriptor):kotlinx.coroutines.internal.LockFreeLinkedListNode");
}
public final void validateNode$kotlinx_coroutines_core(LockFreeLinkedListNode lockFreeLinkedListNode, LockFreeLinkedListNode lockFreeLinkedListNode2) {
boolean z = true;
if (DebugKt.getASSERTIONS_ENABLED()) {
if (!(lockFreeLinkedListNode == this._prev)) {
throw new AssertionError();
}
}
if (DebugKt.getASSERTIONS_ENABLED()) {
if (lockFreeLinkedListNode2 != this._next) {
z = false;
}
if (!z) {
throw new AssertionError();
}
}
}
public String toString() {
return new LockFreeLinkedListNode$toString$1(this) + '@' + DebugStringsKt.getHexAddress(this);
}
public final Object getNext() {
while (true) {
Object obj = this._next;
if (!(obj instanceof OpDescriptor)) {
return obj;
}
((OpDescriptor) obj).perform(this);
}
}
public final boolean addLastIf(LockFreeLinkedListNode lockFreeLinkedListNode, Function0<Boolean> function0) {
int tryCondAddNext;
CondAddOp lockFreeLinkedListNode$makeCondAddOp$1 = new LockFreeLinkedListNode$makeCondAddOp$1(lockFreeLinkedListNode, function0);
do {
tryCondAddNext = getPrevNode().tryCondAddNext(lockFreeLinkedListNode, this, lockFreeLinkedListNode$makeCondAddOp$1);
if (tryCondAddNext == 1) {
return true;
}
} while (tryCondAddNext != 2);
return false;
}
public final boolean addLastIfPrevAndIf(LockFreeLinkedListNode lockFreeLinkedListNode, Function1<? super LockFreeLinkedListNode, Boolean> function1, Function0<Boolean> function0) {
int tryCondAddNext;
CondAddOp lockFreeLinkedListNode$makeCondAddOp$1 = new LockFreeLinkedListNode$makeCondAddOp$1(lockFreeLinkedListNode, function0);
do {
LockFreeLinkedListNode prevNode = getPrevNode();
if (!function1.invoke(prevNode).booleanValue()) {
return false;
}
tryCondAddNext = prevNode.tryCondAddNext(lockFreeLinkedListNode, this, lockFreeLinkedListNode$makeCondAddOp$1);
if (tryCondAddNext == 1) {
return true;
}
} while (tryCondAddNext != 2);
return false;
}
/* access modifiers changed from: private */
public final void finishAdd(LockFreeLinkedListNode lockFreeLinkedListNode) {
LockFreeLinkedListNode lockFreeLinkedListNode2;
do {
lockFreeLinkedListNode2 = (LockFreeLinkedListNode) lockFreeLinkedListNode._prev;
if (getNext() != lockFreeLinkedListNode) {
return;
}
} while (!AbstractResolvableFuture$SafeAtomicHelper$$ExternalSyntheticBackportWithForwarding0.m(_prev$FU, lockFreeLinkedListNode, lockFreeLinkedListNode2, this));
if (isRemoved()) {
lockFreeLinkedListNode.correctPrev((OpDescriptor) null);
}
}
}
Download file