Code with Finding: |
/*
* Decompiled with CFR 0_128.
*
* Could not load the following classes:
* android.app.AlarmManager
* android.app.IntentService
* android.app.PendingIntent
* android.content.ComponentName
* android.content.Context
* android.content.Intent
* android.os.Build
* android.os.Build$VERSION
* android.os.Parcelable
* android.os.SystemClock
* com.whatsapp.App
* com.whatsapp.c2dm.b
* com.whatsapp.util.Log
*/
package com.whatsapp.c2dm;
import android.app.AlarmManager;
import android.app.IntentService;
import android.app.PendingIntent;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import android.os.Parcelable;
import android.os.SystemClock;
import com.whatsapp.App;
import com.whatsapp.c2dm.b;
import com.whatsapp.util.Log;
import java.util.Random;
public class C2DMRegistrar
extends IntentService {
public static int a;
private static final String b;
private static final String d;
private static final String[] z;
private final b c = new b((Context)this);
private final Random e = new Random();
/*
* Enabled aggressive block sorting
*/
static {
String string;
String[] arrstring = new String[33];
String string2 = "\u0016%\u0010o\u00174\u000143\u0011#\u0007))\n?I82\u0017>\u0014re\u0016";
int n = -1;
String[] arrstring2 = arrstring;
int n2 = 0;
block46 : do {
char[] arrc = string2.toCharArray();
int n3 = arrc.length;
int n4 = 0;
do {
int n5;
if (n3 <= n4) {
string = new String(arrc).intern();
switch (n) {
default: {
arrstring2[n2] = string;
string2 = "\u0002#\u000f\u0016,\u0012#\u0002\u000e*\u00059\u001c\u0016$\u0018*\u001c\u0002)\u0014";
n2 = 1;
arrstring2 = arrstring;
n = 0;
continue block46;
}
case 0: {
arrstring2[n2] = string;
string2 = "\u0016%\u0010o\u00174\u000143\u0011#\u0007))\n?I82\u0017>\u0014re\u0016";
n2 = 2;
arrstring2 = arrstring;
n = 1;
continue block46;
}
case 1: {
arrstring2[n2] = string;
string2 = "\u0016%\u0010o\u00174\u0000/%\u00169";
n2 = 3;
arrstring2 = arrstring;
n = 2;
continue block46;
}
case 2: {
arrstring2[n2] = string;
string2 = "#\u0003:)\u0016%\u0014<4\f>\b\u0002)\u0001";
n2 = 4;
arrstring2 = arrstring;
n = 3;
continue block46;
}
case 3: {
arrstring2[n2] = string;
n2 = 5;
arrstring2 = arrstring;
string2 = "6\u00050";
n = 4;
continue block46;
}
case 4: {
arrstring2[n2] = string;
n2 = 6;
string2 = "4\u0014//\u0017";
n = 5;
arrstring2 = arrstring;
continue block46;
}
case 5: {
arrstring2[n2] = string;
n2 = 7;
string2 = "#\u0003:)\u0016%\u0014<4\f>\b\u0002)\u0001";
n = 6;
arrstring2 = arrstring;
continue block46;
}
case 6: {
arrstring2[n2] = string;
n2 = 8;
string2 = "\u0016%\u0010o\u00174\u000143\u0011#\u0007))\n?I.4\u0004#\u0012}3\u0004'\u00039}@\"F.%\u0017'\u0003/}@\"F<0\u0015\u0007\u0003/3\f>\b`e\u0001q\u0015<6\u00005'-034\u0014.)\n?[x$";
n = 7;
arrstring2 = arrstring;
continue block46;
}
case 7: {
arrstring2[n2] = string;
n2 = 9;
string2 = "2\t0n\u0002>\t:,\u0000\u00073$\u0017>\u000f9n\u0006c\u00020n\f?\u00128.\u00114\u0018\u0007,\u00022\u000f\u00011\u0018)\u0013";
n = 8;
arrstring2 = arrstring;
continue block46;
}
case 8: {
arrstring2[n2] = string;
n2 = 10;
string2 = "\u0016%\u0010o\n?.<.\u0001=\u0003\u0014.\u00114\b)o\u0007>\u0001(3_qC.";
n = 9;
arrstring2 = arrstring;
continue block46;
}
case 9: {
arrstring2[n2] = string;
n2 = 11;
string2 = "\u0016%\u0010o\n?.<.\u0001=\u0003\u0014.\u00114\b)`\f?\u00128.\u0011lN35\t=O}";
n = 10;
arrstring2 = arrstring;
continue block46;
}
case 10: {
arrstring2[n2] = string;
n2 = 12;
string2 = "#\u0003:)\u0016%\u0014<4\f>\b\u0002)\u0001";
n = 11;
arrstring2 = arrstring;
continue block46;
}
case 11: {
arrstring2[n2] = string;
n2 = 13;
string2 = "\u0016%\u0010o\u00174\u000143\u0011#\u0007))\n?I(.\u000e?\t*.,?\u00128.\u0011kFx3";
n = 12;
arrstring2 = arrstring;
continue block46;
}
case 12: {
arrstring2[n2] = string;
n2 = 14;
string2 = "#\u0003;2\u0000\"\u000e";
n = 13;
arrstring2 = arrstring;
continue block46;
}
case 13: {
arrstring2[n2] = string;
n2 = 15;
string2 = "2\t0n\u0002>\t:,\u0000\u00073$\u0017>\u000f9n\u0006c\u00020n\f?\u00128.\u00114\u0018\u0007,\u00022\u000f\u00011\u0018)\u0013";
n = 14;
arrstring2 = arrstring;
continue block46;
}
case 14: {
arrstring2[n2] = string;
n2 = 16;
string2 = "\u0016%\u0010o\u00174\u000143\u00114\u00148$J?\u0003*";
n = 15;
arrstring2 = arrstring;
continue block46;
}
case 15: {
arrstring2[n2] = string;
n2 = 17;
string2 = "\u0016%\u0010o\u00174\u000143\u00114\u00148$Jt\u0015}!\u0015!082\u00168\t3}@5";
n = 16;
arrstring2 = arrstring;
continue block46;
}
case 16: {
arrstring2[n2] = string;
n2 = 18;
string2 = "\"\u00033$\u0000#";
n = 17;
arrstring2 = arrstring;
continue block46;
}
case 17: {
arrstring2[n2] = string;
n2 = 19;
string2 = "\u0016%\u0010o\u00174\u000143\u0011#\u0007))\n?I/%\u0014$\u0003.4";
n = 18;
arrstring2 = arrstring;
continue block46;
}
case 18: {
arrstring2[n2] = string;
n2 = 20;
string2 = "0\n<2\b";
n = 19;
arrstring2 = arrstring;
continue block46;
}
case 19: {
arrstring2[n2] = string;
n2 = 21;
string2 = "\u0016%\u0010o\u00174\u000143\u0011#\u0007))\n?I.%\u0006$\u001444\u001c\u0014\u001e>%\u0015%\u000f2.";
n = 20;
arrstring2 = arrstring;
continue block46;
}
case 20: {
arrstring2[n2] = string;
n2 = 22;
string2 = "2\t0n\u0002>\t:,\u0000\u00073$\u0017>\u000f9n\u0006c\u00020n\f?\u00128.\u00114\u0018\u0007,\u00022\u0018\u0012";
n = 21;
arrstring2 = arrstring;
continue block46;
}
case 21: {
arrstring2[n2] = string;
n2 = 23;
string2 = "c_nyPdRiq]bR";
n = 22;
arrstring2 = arrstring;
continue block46;
}
case 22: {
arrstring2[n2] = string;
n2 = 24;
string2 = "0\u0016-";
n = 23;
arrstring2 = arrstring;
continue block46;
}
case 23: {
arrstring2[n2] = string;
n2 = 25;
string2 = "\u0016%\u0010o\u00174\u000143\u0011#\u0007))\n?I*!\f%\u000f3'";
n = 24;
arrstring2 = arrstring;
continue block46;
}
case 24: {
arrstring2[n2] = string;
n2 = 26;
string2 = "2\t0n\u0002>\t:,\u0000\u00073$\u0017>\u000f9n\u0002<\u0015";
n = 25;
arrstring2 = arrstring;
continue block46;
}
case 25: {
arrstring2[n2] = string;
n2 = 27;
string2 = "\u0016%\u0010o\u00174\u000143\u0011#\u0007))\n?I?!\u0006:\t;&Et\u000203";
n = 26;
arrstring2 = arrstring;
continue block46;
}
case 26: {
arrstring2[n2] = string;
n2 = 28;
string2 = "\u0016%\u0010o\u00174\u0017(%\u0016%\u00148'\f\"\u0012/!\u00118\t3";
n = 27;
arrstring2 = arrstring;
continue block46;
}
case 27: {
arrstring2[n2] = string;
n2 = 29;
string2 = "\u0016%\u0010o\u00174\u000143\u0011#\u0007))\n?I/%\u0003#\u0003.(";
n = 28;
arrstring2 = arrstring;
continue block46;
}
case 28: {
arrstring2[n2] = string;
n2 = 30;
string2 = "#\u0003;2\u0000\"\u000e";
n = 29;
arrstring2 = arrstring;
continue block46;
}
case 29: {
arrstring2[n2] = string;
n2 = 31;
string2 = "2\t0n\u0002>\t:,\u0000\u00073$\u0017>\u000f9n\u0006c\u00020n\f?\u00128.\u00114\u0018\u0007,\u00022\u000f\u00011\u0018)\u0013";
n = 30;
arrstring2 = arrstring;
continue block46;
}
case 30: {
arrstring2[n2] = string;
n2 = 32;
string2 = "#\u0003;2\u0000\"\u000e";
n = 31;
arrstring2 = arrstring;
continue block46;
}
case 31:
}
break block46;
}
char c = arrc[n4];
switch (n4 % 5) {
default: {
n5 = 101;
break;
}
case 0: {
n5 = 81;
break;
}
case 1: {
n5 = 102;
break;
}
case 2: {
n5 = 93;
break;
}
case 3: {
n5 = 64;
}
}
arrc[n4] = (char)(n5 ^ c);
++n4;
} while (true);
break;
} while (true);
arrstring2[n2] = string;
z = arrstring;
b = C2DMRegistrar.class.getCanonicalName();
StringBuilder stringBuilder = new StringBuilder().append(b);
char[] arrc = "5\t\u00017\u0005".toCharArray();
int n6 = arrc.length;
int n7 = 0;
do {
int n8;
if (n6 <= n7) {
d = stringBuilder.append(new String(arrc).intern()).toString();
return;
}
char c = arrc[n7];
switch (n7 % 5) {
default: {
n8 = 101;
break;
}
case 0: {
n8 = 81;
break;
}
case 1: {
n8 = 102;
break;
}
case 2: {
n8 = 93;
break;
}
case 3: {
n8 = 64;
}
}
arrc[n7] = (char)(n8 ^ c);
++n7;
} while (true);
}
public C2DMRegistrar() {
super(b);
}
private void a() {
Log.i((String)z[3]);
this.a(false);
}
static void a(Context context, Intent intent) {
intent.setClassName(context, b);
context.startService(intent);
}
/*
* Loose catch block
* Enabled aggressive block sorting
* Enabled unnecessary exception pruning
* Enabled aggressive exception aggregation
* Lifted jumps to return sites
*/
public static void a(Context context, String string) {
Intent intent = new Intent(d);
if (string != null) {
intent.putExtra(z[4], string);
}
C2DMRegistrar.a(context, intent);
return;
catch (SecurityException securityException) {
throw securityException;
}
}
private void a(String string) {
App.b((String)string, (String)z[5]);
}
/*
* Loose catch block
* Enabled aggressive block sorting
* Enabled unnecessary exception pruning
* Enabled aggressive exception aggregation
* Lifted jumps to return sites
*/
private void a(boolean bl) {
int n = a;
Log.i((String)z[28]);
Intent intent = new Intent(z[22]).setPackage(z[26]).putExtra(z[24], (Parcelable)PendingIntent.getBroadcast((Context)this, (int)0, (Intent)new Intent(), (int)0)).putExtra(z[18], z[23]);
PendingIntent pendingIntent = PendingIntent.getService((Context)this, (int)0, (Intent)intent, (int)536870912);
if (!bl && pendingIntent != null) {
Log.i((String)z[25]);
return;
}
long l = this.b();
if (l > 0L) {
block12 : {
AlarmManager alarmManager;
PendingIntent pendingIntent2;
block11 : {
String string = z[27];
Object[] arrobject = new Object[]{l};
Log.c((String)string, (Throwable)null, (Object[])arrobject);
pendingIntent2 = PendingIntent.getService((Context)this, (int)0, (Intent)intent, (int)0);
alarmManager = (AlarmManager)this.getSystemService(z[20]);
if (Build.VERSION.SDK_INT < 19) break block11;
alarmManager.setExact(3, l + SystemClock.elapsedRealtime(), pendingIntent2);
if (n == 0) break block12;
}
alarmManager.set(3, l + SystemClock.elapsedRealtime(), pendingIntent2);
}
if (n == 0) return;
}
Log.i((String)z[19]);
try {
this.startService(intent);
return;
}
catch (SecurityException securityException) {
Log.e((String)z[21]);
return;
}
catch (SecurityException securityException) {
throw securityException;
}
}
public static boolean a(Context context) {
return new b(context).i();
}
private long b() {
int n = this.c.b();
if (n == 0) {
return 0L;
}
long l = 15000L * (1L << Math.min(n - 1, 10));
return (long)((0.5 + this.e.nextDouble()) * (double)l);
}
public static void b(Context context) {
Log.i((String)z[29]);
Intent intent = new Intent(z[31]);
intent.putExtra(z[30], z[32]);
C2DMRegistrar.a(context, intent);
}
/*
* Enabled aggressive block sorting
* Enabled unnecessary exception pruning
* Enabled aggressive exception aggregation
*/
private void b(String string) {
block5 : {
int n;
block4 : {
n = this.c.c();
String string2 = z[17];
Object[] arrobject = new Object[]{string, n};
Log.c((String)string2, (Throwable)null, (Object[])arrobject);
this.c.e();
if (this.c.a() != null) break block4;
Log.i((String)z[16]);
App.c((Context)this, (int)0);
}
this.c.a(string);
if (n <= 0) break block5;
this.c.a(n);
}
this.a(string);
}
/*
* Unable to fully structure code
* Enabled aggressive block sorting
* Enabled unnecessary exception pruning
* Enabled aggressive exception aggregation
* Lifted jumps to return sites
*/
private void c(String var1_1) {
var4_2 = var1_1.equals(C2DMRegistrar.z[1]);
if (!var4_2) ** GOTO lbl11
{
catch (SecurityException var2_3) {
throw var2_3;
}
}
Log.c((String)C2DMRegistrar.z[2], (Throwable)null, (Object[])new Object[]{var1_1});
this.c.d();
this.a(true);
if (C2DMRegistrar.a == 0) return;
lbl11: // 2 sources:
Log.b((String)C2DMRegistrar.z[0], (Throwable)null, (Object[])new Object[]{var1_1});
this.c.f();
this.c.g();
return;
}
/*
* Exception decompiling
*/
public void onHandleIntent(Intent var1_1) {
// This method has failed to decompile. When submitting a bug report, please provide this stack trace, and (if you hold appropriate legal rights) the relevant class file.
// org.benf.cfr.reader.util.ConfusedCFRException: Started 3 blocks at once
// org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.getStartingBlocks(Op04StructuredStatement.java:395)
// org.benf.cfr.reader.bytecode.analysis.opgraph.Op04StructuredStatement.buildNestedBlocks(Op04StructuredStatement.java:473)
// org.benf.cfr.reader.bytecode.analysis.opgraph.Op03SimpleStatement.createInitialStructuredBlock(Op03SimpleStatement.java:2880)
// org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisInner(CodeAnalyser.java:816)
// org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysisOrWrapFail(CodeAnalyser.java:196)
// org.benf.cfr.reader.bytecode.CodeAnalyser.getAnalysis(CodeAnalyser.java:141)
// org.benf.cfr.reader.entities.attributes.AttributeCode.analyse(AttributeCode.java:95)
// org.benf.cfr.reader.entities.Method.analyse(Method.java:370)
// org.benf.cfr.reader.entities.ClassFile.analyseMid(ClassFile.java:852)
// org.benf.cfr.reader.entities.ClassFile.analyseTop(ClassFile.java:753)
// org.benf.cfr.reader.Main.doClass(Main.java:46)
// org.benf.cfr.reader.Main.main(Main.java:190)
// ReviewPreparator.unZipIt(ReviewPreparator.java:54)
// PrepareAndSendToReview$.$anonfun$prepareAndSendToReview$4(PrepareAndSendToReview.scala:37)
// scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:234)
// scala.collection.immutable.HashSet$HashSet1.foreach(HashSet.scala:320)
// scala.collection.immutable.HashSet$HashTrieSet.foreach(HashSet.scala:976)
// scala.collection.immutable.HashSet$HashTrieSet.foreach(HashSet.scala:976)
// scala.collection.TraversableLike.map(TraversableLike.scala:234)
// scala.collection.TraversableLike.map$(TraversableLike.scala:227)
// scala.collection.AbstractSet.scala$collection$SetLike$$super$map(Set.scala:47)
// scala.collection.SetLike.map(SetLike.scala:101)
// scala.collection.SetLike.map$(SetLike.scala:101)
// scala.collection.AbstractSet.map(Set.scala:47)
// PrepareAndSendToReview$.prepareAndSendToReview(PrepareAndSendToReview.scala:35)
// PrepareAndSendToReview$.main(PrepareAndSendToReview.scala:12)
// PrepareAndSendToReview.main(PrepareAndSendToReview.scala)
throw new IllegalStateException("Decompilation failed");
}
/*
* Enabled aggressive block sorting
* Enabled unnecessary exception pruning
* Enabled aggressive exception aggregation
*/
public int onStartCommand(Intent intent, int n, int n2) {
boolean bl;
block4 : {
block3 : {
if (intent != null) {
boolean bl2 = z[15].equals(intent.getAction());
if (!bl2) break block3;
bl = true;
break block4;
}
}
bl = false;
}
this.setIntentRedelivery(bl);
return super.onStartCommand(intent, n, n2);
}
}
|