CrackMe.apk
Download file
package com.google.android.exoplayer2.util;
import java.lang.Exception;
import java.util.concurrent.CancellationException;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.RunnableFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
public abstract class RunnableFutureTask<R, E extends Exception> implements RunnableFuture<R> {
private final Object cancelLock = new Object();
private boolean canceled;
private Exception exception;
private final ConditionVariable finished = new ConditionVariable();
private R result;
private final ConditionVariable started = new ConditionVariable();
private Thread workThread;
/* access modifiers changed from: protected */
public void cancelWork() {
}
/* access modifiers changed from: protected */
public abstract R doWork() throws Exception;
protected RunnableFutureTask() {
}
public final void blockUntilStarted() {
this.started.blockUninterruptible();
}
public final void blockUntilFinished() {
this.finished.blockUninterruptible();
}
public final R get() throws ExecutionException, InterruptedException {
this.finished.block();
return getResult();
}
public final R get(long j, TimeUnit timeUnit) throws ExecutionException, InterruptedException, TimeoutException {
if (this.finished.block(TimeUnit.MILLISECONDS.convert(j, timeUnit))) {
return getResult();
}
throw new TimeoutException();
}
/* JADX WARNING: Code restructure failed: missing block: B:14:0x002b, code lost:
return true;
*/
/* Code decompiled incorrectly, please refer to instructions dump. */
public final boolean cancel(boolean r4) {
/*
r3 = this;
java.lang.Object r0 = r3.cancelLock
monitor-enter(r0)
boolean r1 = r3.canceled // Catch:{ all -> 0x002f }
if (r1 != 0) goto L_0x002c
com.google.android.exoplayer2.util.ConditionVariable r1 = r3.finished // Catch:{ all -> 0x002f }
boolean r1 = r1.isOpen() // Catch:{ all -> 0x002f }
if (r1 == 0) goto L_0x0010
goto L_0x002c
L_0x0010:
r1 = 1
r3.canceled = r1 // Catch:{ all -> 0x002f }
r3.cancelWork() // Catch:{ all -> 0x002f }
java.lang.Thread r2 = r3.workThread // Catch:{ all -> 0x002f }
if (r2 == 0) goto L_0x0020
if (r4 == 0) goto L_0x002a
r2.interrupt() // Catch:{ all -> 0x002f }
goto L_0x002a
L_0x0020:
com.google.android.exoplayer2.util.ConditionVariable r4 = r3.started // Catch:{ all -> 0x002f }
r4.open() // Catch:{ all -> 0x002f }
com.google.android.exoplayer2.util.ConditionVariable r4 = r3.finished // Catch:{ all -> 0x002f }
r4.open() // Catch:{ all -> 0x002f }
L_0x002a:
monitor-exit(r0) // Catch:{ all -> 0x002f }
return r1
L_0x002c:
r4 = 0
monitor-exit(r0) // Catch:{ all -> 0x002f }
return r4
L_0x002f:
r4 = move-exception
monitor-exit(r0) // Catch:{ all -> 0x002f }
throw r4
*/
throw new UnsupportedOperationException("Method not decompiled: com.google.android.exoplayer2.util.RunnableFutureTask.cancel(boolean):boolean");
}
public final boolean isDone() {
return this.finished.isOpen();
}
public final boolean isCancelled() {
return this.canceled;
}
/* JADX WARNING: No exception handlers in catch block: Catch:{ } */
/* Code decompiled incorrectly, please refer to instructions dump. */
public final void run() {
/*
r4 = this;
java.lang.Object r0 = r4.cancelLock
monitor-enter(r0)
boolean r1 = r4.canceled // Catch:{ all -> 0x0057 }
if (r1 == 0) goto L_0x0009
monitor-exit(r0) // Catch:{ all -> 0x0057 }
return
L_0x0009:
java.lang.Thread r1 = java.lang.Thread.currentThread() // Catch:{ all -> 0x0057 }
r4.workThread = r1 // Catch:{ all -> 0x0057 }
monitor-exit(r0) // Catch:{ all -> 0x0057 }
com.google.android.exoplayer2.util.ConditionVariable r0 = r4.started
r0.open()
r0 = 0
java.lang.Object r1 = r4.doWork() // Catch:{ Exception -> 0x0030 }
r4.result = r1 // Catch:{ Exception -> 0x0030 }
java.lang.Object r1 = r4.cancelLock
monitor-enter(r1)
com.google.android.exoplayer2.util.ConditionVariable r2 = r4.finished // Catch:{ all -> 0x002b }
r2.open() // Catch:{ all -> 0x002b }
r4.workThread = r0 // Catch:{ all -> 0x002b }
java.lang.Thread.interrupted() // Catch:{ all -> 0x002b }
monitor-exit(r1) // Catch:{ all -> 0x002b }
goto L_0x0041
L_0x002b:
r0 = move-exception
monitor-exit(r1) // Catch:{ all -> 0x002b }
throw r0
L_0x002e:
r1 = move-exception
goto L_0x0045
L_0x0030:
r1 = move-exception
r4.exception = r1 // Catch:{ all -> 0x002e }
java.lang.Object r1 = r4.cancelLock
monitor-enter(r1)
com.google.android.exoplayer2.util.ConditionVariable r2 = r4.finished // Catch:{ all -> 0x0042 }
r2.open() // Catch:{ all -> 0x0042 }
r4.workThread = r0 // Catch:{ all -> 0x0042 }
java.lang.Thread.interrupted() // Catch:{ all -> 0x0042 }
monitor-exit(r1) // Catch:{ all -> 0x0042 }
L_0x0041:
return
L_0x0042:
r0 = move-exception
monitor-exit(r1) // Catch:{ all -> 0x0042 }
throw r0
L_0x0045:
java.lang.Object r2 = r4.cancelLock
monitor-enter(r2)
com.google.android.exoplayer2.util.ConditionVariable r3 = r4.finished // Catch:{ all -> 0x0054 }
r3.open() // Catch:{ all -> 0x0054 }
r4.workThread = r0 // Catch:{ all -> 0x0054 }
java.lang.Thread.interrupted() // Catch:{ all -> 0x0054 }
monitor-exit(r2) // Catch:{ all -> 0x0054 }
throw r1
L_0x0054:
r0 = move-exception
monitor-exit(r2) // Catch:{ all -> 0x0054 }
throw r0
L_0x0057:
r1 = move-exception
monitor-exit(r0) // Catch:{ all -> 0x0057 }
throw r1
*/
throw new UnsupportedOperationException("Method not decompiled: com.google.android.exoplayer2.util.RunnableFutureTask.run():void");
}
private R getResult() throws ExecutionException {
if (this.canceled) {
throw new CancellationException();
} else if (this.exception == null) {
return this.result;
} else {
throw new ExecutionException(this.exception);
}
}
}
Download file