home *** CD-ROM | disk | FTP | other *** search
- import java.util.Hashtable;
-
- public class c101 {
- public static final boolean f97;
- public static Hashtable f180;
- public static c12 f179;
- public static c12 f178;
- public static c12 f177;
- public static c12 f176;
- public static c66 f175;
- public static c66 f174;
- public static c66 f173;
- public static c66 f172;
- public static c95 f171;
- public static c95 f170;
- public static c95 f169;
- public static i96 f168;
-
- static {
- f97 = c99.f97;
- f180 = new Hashtable();
- f179 = new c12();
- f178 = new c12();
- f177 = new c12();
- f176 = new c12();
- f175 = new c66();
- f174 = new c66();
- f173 = new c66();
- f172 = new c66();
- f171 = new c95();
- f170 = new c95();
- f169 = new c95();
- f168 = null;
- }
-
- public static void m158(String var0) {
- c99.m158(var0);
- }
-
- public static void m13(String var0) {
- c99.m13(var0);
- }
-
- public static void m259(c59 var0) {
- if (f168 != null) {
- f168.m227(var0);
- }
-
- }
-
- public static boolean m260(c86 var0) {
- try {
- ((c9)var0).m31("readObject", c65.m152("(Ljava/io/ObjectInputStream;)V"));
- ((c9)var0).m31("writeObject", c65.m152("(Ljava/io/ObjectOutputStream;)V"));
- return true;
- } catch (NoSuchMethodError var2) {
- return false;
- }
- }
-
- public static boolean m261(c9 var0) {
- return var0.m37(c9.m28("java.io.Serializable")) && !var0.m37(c9.m28("java.io.Externalizable"));
- }
-
- public static void m262(c86 var0) {
- if (c99.f152.m186()) {
- var0.m170();
- c12 var1 = var0.f15;
-
- for(int var2 = 0; var2 < var1.f7; ++var2) {
- c86 var3 = (c86)var1.m3(var2);
- var3.m170();
- }
- }
-
- if (m260(var0)) {
- if (f97) {
- m13("class " + var0.f10 + " has CUSTOM serialization");
- }
-
- c91 var8 = c86.m31(var0, "readObject", c65.m152("(Ljava/io/ObjectInputStream;)V"));
- c91 var11 = c86.m31(var0, "writeObject", c65.m152("(Ljava/io/ObjectOutputStream;)V"));
- if (var8 != null) {
- if (!f175.m47(var8) && !f174.m47(var8) && !f173.m47(var8)) {
- if (f97) {
- m13("adding " + var8.f86.f10 + "." + var8.f10 + var8.f92.m148() + " to newMethods (serialization)");
- }
-
- f173.m1(var8);
- var8.m196();
- }
-
- m259(var8);
- }
-
- if (var11 != null) {
- if (!f175.m47(var11) && !f174.m47(var11) && !f173.m47(var11)) {
- if (f97) {
- m13("adding " + var11.f86.f10 + "." + var11.f10 + var11.f92.m148() + " to newMethods (serialization)");
- }
-
- f173.m1(var11);
- var11.m196();
- }
-
- m259(var11);
- }
- } else {
- if (f97) {
- m13("class " + var0.f10 + " has DEFAULT serialization");
- }
-
- if (c99.f152.m186()) {
- c38 var9 = var0.f14;
-
- for(int var12 = 0; var12 < var9.f7; ++var12) {
- c90 var13 = (c90)var9.m3(var12);
- if (!((c50)var13).m124() && !((c50)var13).m131()) {
- if (f97) {
- m13(" field " + var13.f86.f10 + "." + var13.f10 + " " + c22.m63(var13.f64) + " preserved (serialization)");
- }
-
- var13.m196();
- }
- }
- }
- }
-
- c90 var10 = c86.m29(var0, "serialVersionUID");
- if (var10 != null) {
- if (f97) {
- m13("*** found field " + var10.m135());
- }
-
- var10.m196();
- }
-
- }
-
- public static void m263() {
- c65 var0 = c65.m152("()V");
- int var1 = 0;
-
- while(true) {
- c12 var5 = f178;
- if (var1 >= var5.f7) {
- return;
- }
-
- c86 var2;
- for(var2 = (c86)f178.m3(var1); m261(var2); var2 = (c86)var2.f18) {
- if (var2.f20) {
- m262(var2);
- }
- }
-
- if (var2.f20) {
- c91 var3 = c86.m31(var2, "<init>", var0);
- if (var3 != null) {
- if (!f175.m47(var3) && !f174.m47(var3) && !f173.m47(var3)) {
- if (f97) {
- m13("adding " + var3.f86.f10 + "." + var3.f10 + var3.f92.m148() + " to newMethods (serialization)");
- }
-
- f173.m1(var3);
- }
-
- m259(var3);
- }
- }
-
- ++var1;
- }
- }
-
- public static void m264() {
- c12 var0 = c74.f106;
-
- for(int var1 = 0; var1 < var0.f7; ++var1) {
- c86 var2 = (c86)var0.m3(var1);
- if (var2.f20 && !var2.f22) {
- c12 var3 = var2.m174();
-
- for(int var4 = 0; var4 < var3.f7; ++var4) {
- c9 var5 = var3.m3(var4);
- c66 var6 = var5.f13;
-
- for(int var7 = 0; var7 < var6.f7; ++var7) {
- c91 var8 = (c91)var6.m3(var7);
- if (((c59)var8).m137() && var8.m207() || !var8.f86.f20) {
- c91 var9 = c86.m30(var2, var8.f10, var8.f92);
- if (var9 != null) {
- if (f97 && !var9.m207()) {
- m13("preserveNeededSignatures: " + " preserving signature of dead method " + var9 + " which implements interface method " + var8);
- }
-
- var9.m208();
- if (!var8.f86.f20) {
- m205(var9);
- }
-
- if (!var9.f86.f20) {
- m205(var8);
- }
- } else {
- System.out.println("*** internal JAX error in preserveNeededSignatures()");
- System.out.println("class: " + var2.f10);
- System.out.println("interface: " + var5.f10);
- System.out.println("interface method: " + ((c59)var8).m135());
- System.out.println("implementing method: " + ((c59)var9).m135());
- c99.m236(100);
- }
- }
- }
- }
- }
- }
-
- }
-
- public static void m205(c91 var0) {
- if (!var0.m206()) {
- if (f97 && var0.f86.f20) {
- m13(" giving property overridesExternalMethod to method " + var0);
- }
-
- var0.m205();
- m259(var0);
- if (var0.f94 != null) {
- m205((c91)var0.f94);
- }
-
- int var1 = 0;
-
- while(true) {
- c66 var4 = var0.f93;
- if (var1 >= var4.f7) {
- return;
- }
-
- c91 var2 = (c91)var0.f93.m3(var1);
- m205(var2);
- ++var1;
- }
- }
- }
-
- public static void m265() {
- int var0 = 0;
-
- while(true) {
- c12 var12 = f178;
- if (var0 >= var12.f7) {
- return;
- }
-
- c86 var1 = (c86)f178.m3(var0);
- if (f97) {
- m13(" examining overridden methods w.r.t. instantiated class " + var1.f10);
- }
-
- c66 var2 = new c66();
- c12 var3 = var1.m162();
-
- for(int var4 = 0; var4 < var3.f7; ++var4) {
- c9 var5 = var3.m3(var4);
- if (!var5.f20) {
- c66 var6 = var5.f13;
-
- for(int var7 = 0; var7 < var6.f7; ++var7) {
- c59 var8 = var6.m3(var7);
- if (var8.m137() && (((c50)var8).m130() || ((c50)var8).m129()) && !((c50)var8).m127()) {
- var2.m1(var8);
- }
- }
- }
- }
-
- for(int var17 = 0; var17 < var2.f7; ++var17) {
- c59 var18 = var2.m3(var17);
- c91 var19 = (c91)((c9)var1).m30(var18.f10, var18.f92);
- if (var19.f86.f20) {
- m205(var19);
- if (!f175.m47(var19) && !f174.m47(var19) && !f173.m47(var19)) {
- f173.m1(var19);
- if (f97) {
- m13(" adding method " + var19.f86.f10 + "." + var19.f10 + var19.f92.m148() + " to newMethods because it overrides external method " + var18.f86.f10 + "." + var18.f10 + var18.f92.m148());
- }
- }
- }
- }
-
- ++var0;
- }
- }
-
- public static void m266(c93 var0, c12 var1) {
- for(int var2 = 0; var2 < var1.f7; ++var2) {
- c86 var3 = (c86)var1.m3(var2);
- c9 var4 = var0.f44.f86;
- if (((c9)var3).m38(var4)) {
- if (f97) {
- m13(" processing virtual call site " + var0 + " w.r.t. class " + var3.f10);
- }
-
- c91 var5 = var0.f44;
- c91 var6 = c86.m30(var3, var5.f10, var5.f92);
- if (var6 != null) {
- c66 var7 = var0.m221();
- if (!var7.m47(var6)) {
- var7.m1(var6);
- if (f97) {
- m13(" found new target " + var6 + " for virtual callsite " + var0);
- }
-
- if (f168 != null) {
- f168.m228(var6, var5);
- }
- }
-
- if (!f175.m47(var6) && !f174.m47(var6) && !f173.m47(var6)) {
- f173.m1(var6);
- if (f97) {
- m13(" adding method " + var6.f86.f10 + "." + var6.f10 + var6.f92.m148() + " to newMethods");
- }
- }
- } else {
- m158("***internal JAX error in processCallSite: target is NULL!");
- m158("class = " + var3.f10);
- m158("method = " + var5);
- c99.m236(100);
- }
- }
- }
-
- }
-
- public static void m267(c91 var0) {
- if (var0 != null) {
- if (f97) {
- m13(" processing method " + var0.f86.f10 + "." + var0.f10 + var0.f92.m148());
- }
-
- c13 var1 = var0.f81;
- if (var1 == null) {
- var0.m208();
- if (f97) {
- m13("processMethod: abstract or native method: " + var0.f86.f10 + "." + var0.f10 + var0.f92.m148());
- }
- } else {
- var0.m212();
- if (f168 != null) {
- f168.m230(var0);
- } else {
- int var2 = 0;
-
- while(true) {
- c43 var9 = var0.f81.f48;
- if (var2 >= var9.f7) {
- break;
- }
-
- c41 var3 = var1.f48.m3(var2);
- if (var3.m107()) {
- c86 var4 = (c86)var3.m41();
- if (var4.f28) {
- var4 = (c86)var4.f27;
- }
-
- if (var4.f20) {
- var4.m170();
- if (f97) {
- m13(" instanceof on " + var4.f10 + " at index " + var2 + " in " + var0.f86.f10 + "." + ((c59)var0).m135());
- }
- }
- } else if (var3.m108()) {
- c86 var10 = (c86)var3.m41();
- if (var10.f28) {
- var10 = (c86)var10.f27;
- }
-
- if (var10.f20) {
- var10.m170();
- if (f97) {
- m13(" checkcast on " + var10.f10 + " at index " + var2 + " in " + var0.f86.f10 + "." + ((c59)var0).m135());
- }
- }
- } else if (var3.f80 == 187) {
- label159: {
- c86 var11 = (c86)var3.m41();
- if (!var11.f28) {
- if (!var11.f20) {
- break label159;
- }
-
- var11.m166();
- if (!f179.m47(var11) && !f178.m47(var11) && !f177.m47(var11)) {
- f177.m1(var11);
- }
-
- if (f97) {
- m13(" class " + var11.f10 + " instantiated at index " + var2 + " in " + var0.f86.f10 + "." + var0.f10);
- }
- } else {
- var11 = (c86)var11.f27;
- if (!var11.f20) {
- break label159;
- }
- }
-
- m268(var11);
- }
- } else if (var3.m109()) {
- c86 var12 = (c86)var3.m41();
- if (var12.f28) {
- var12 = (c86)var12.f27;
- }
-
- if (var12.f20) {
- m268(var12);
- }
- } else if (var3.m110()) {
- c90 var5 = (c90)var3.m103();
- if (var5.f86.f20) {
- if (var3.f80 != 180 && var3.f80 != 178) {
- var5.m198();
- if (f97) {
- m13(" field " + var5.f86.f10 + "." + var5.f10 + " " + c22.m63(var5.f64) + " written at index " + var2 + " in " + var0.f86.f10 + "." + var0.f10);
- }
- } else {
- var5.m200();
- if (f97) {
- m13(" field " + var5.f86.f10 + "." + var5.f10 + " " + c22.m63(var5.f64) + " read at index " + var2 + " in " + var0.f86.f10 + "." + var0.f10);
- }
- }
-
- m268((c86)var5.f86);
- }
- } else if (!var3.m114() && !var3.m112()) {
- if (var3.m113() || var3.m111()) {
- c91 var14 = (c91)var3.m119();
- if (var14.f86.f20) {
- if (f97) {
- m13(" virtual call to method: " + var14.f86.f10 + "." + var14.f10 + var14.f92.m148() + " in " + var0.f86.f10 + "." + var0.f10 + " at index " + var2);
- }
-
- var14.m210();
- c92 var15 = (c92)c34.f73.m91(var0, (c64)var3, var14);
- if (!f180.containsKey(var14)) {
- if (f97) {
- m13(" registering virtual call site to method: " + var14.f86.f10 + "." + var14.f10 + var14.f92.m148());
- }
-
- c93 var17 = new c93(var14);
- var17.m223(var15);
- f180.put(var14, var17);
- f169.m1(var17);
- } else {
- c93 var18 = (c93)f180.get(var14);
- if (!var18.m224()) {
- f169.m1(var18);
- }
-
- var18.m223(var15);
- }
-
- m268((c86)var14.f86);
- }
- }
- } else {
- c91 var13 = (c91)var3.m119();
- if (var13.f86.f20) {
- if (f97) {
- m13(" direct call to method: " + var13.f86.f10 + "." + var13.f10 + var13.f92.m148() + " in " + var0.f86.f10 + "." + var0.f10 + " at index " + var2);
- }
-
- if (!f175.m47(var13) && !f174.m47(var13) && !f173.m47(var13)) {
- if (f97) {
- m13(" adding method " + var13.f86.f10 + "." + var13.f10 + var13.f92.m148() + " to newMethods");
- }
-
- f173.m1(var13);
- }
-
- c92 var6 = (c92)c34.f73.m91(var0, (c64)var3, var13);
- if (!f180.containsKey(var13)) {
- c93 var7 = new c93(var13);
- var7.m226(var6);
- f180.put(var13, var7);
- } else {
- c93 var16 = (c93)f180.get(var13);
- var16.m226(var6);
- }
-
- m268((c86)var13.f86);
- }
- }
-
- ++var2;
- }
- }
- }
- } else {
- m158("***internal JAX error in processMethod: method is NULL!");
- c99.m236(100);
- }
-
- }
-
- public static void m268(c86 var0) {
- if (var0 != null) {
- if (!f176.m47(var0)) {
- f176.m1(var0);
- c65 var1 = c65.m152("()V");
- c91 var2 = c86.m31(var0, "<clinit>", var1);
- if (var2 != null && !f175.m47(var2) && !f174.m47(var2) && !f173.m47(var2)) {
- if (f97) {
- m13(" adding method " + var2.f86.f10 + "." + var2.f10 + var2.f92.m148() + " to newMethods");
- }
-
- f173.m1(var2);
- m259(var2);
- }
- }
-
- while(var0 != null) {
- var0 = (c86)var0.f18;
- m268(var0);
- }
-
- }
- }
-
- public static c66 m269() {
- c12 var0 = c74.f106;
- c66 var1 = new c66();
- c65 var2 = c65.m152("([Ljava/lang/String;)V");
-
- for(int var3 = 0; var3 < var0.f7; ++var3) {
- c86 var4 = (c86)var0.m3(var3);
- if (var4.f20) {
- c91 var5 = c86.m31(var4, "main", var2);
- if (var5 != null && ((c50)var5).m131()) {
- m13("found main in class " + var4.f10);
- var1.m1(var5);
- }
- }
- }
-
- return var1;
- }
-
- public static void m245() {
- c86 var0 = (c86)c74.m45(c99.f152.f136);
- c66 var1 = m269();
-
- for(int var2 = 0; var2 < var1.f7; ++var2) {
- c91 var3 = (c91)var1.m3(var2);
- if (var3.f86 != var0 && !var3.m215()) {
- c99.f152.m194("ignoring main() method in class " + var3.f86.f10);
- } else {
- ((c86)var3.f86).m168();
- f174.m1(var3);
- m259(var3);
- }
- }
-
- m268(var0);
- c9 var19 = c74.m45("java.applet.Applet");
- c12 var20 = c74.f106;
- c65 var4 = c65.m152("()V");
-
- for(int var5 = 0; var5 < var20.f7; ++var5) {
- c86 var6 = (c86)var20.m3(var5);
- if (var6.f20) {
- if (((c9)var6).m38(var19) && var6.f23 && !((c50)var6).m128()) {
- f178.m1(var6);
- var6.m166();
- c91 var7 = c86.m31(var6, "<init>", var4);
- if (var7 != null) {
- f174.m1(var7);
- m259(var7);
- }
- }
-
- if (var6.m173()) {
- if (var6.f23) {
- f178.m1(var6);
- var6.m166();
- c91 var21 = c86.m31(var6, "<init>", var4);
- if (var21 != null) {
- f174.m1(var21);
- m259(var21);
- }
- }
-
- m268(var6);
- }
-
- c66 var22 = var6.f13;
-
- for(int var8 = 0; var8 < var22.f7; ++var8) {
- c91 var9 = (c91)var22.m3(var8);
- if (var9.m215()) {
- f174.m1(var9);
- m259(var9);
- m268(var6);
- }
- }
-
- c38 var23 = var6.f14;
-
- for(int var24 = 0; var24 < var23.f7; ++var24) {
- c90 var10 = (c90)var23.m3(var24);
- if (var10.m203()) {
- m268(var6);
- }
- }
- }
- }
-
- }
-
- public static void m270() {
- f170 = f169;
- f169 = new c95();
- }
-
- public static void m271() {
- f174 = f173;
- f173 = new c66();
- }
-
- public static void m272() {
- f178 = f177;
- f177 = new c12();
- }
-
- public static void m273() {
- int var0 = 0;
-
- while(true) {
- c12 var3 = f178;
- if (var0 >= var3.f7) {
- return;
- }
-
- c9 var1 = f178.m3(var0);
- f179.m1(var1);
- f178.m2(var0);
- --var0;
- ++var0;
- }
- }
-
- public static void m274() {
- f179 = null;
- f178 = null;
- f177 = null;
- f175 = null;
- f174 = null;
- f173 = null;
- f171 = null;
- f170 = null;
- f169 = null;
- f176 = null;
- }
-
- public static void m235(i96 var0) {
- c12 var9 = c74.f106;
- int var2 = var9.f7;
- byte var1;
- if (var2 < 50) {
- var1 = 10;
- } else if (var2 < 100) {
- var1 = 20;
- } else {
- var1 = 40;
- }
-
- String var3;
- if (var0 != null) {
- f168 = var0;
- var3 = "FTA";
- } else {
- var3 = "RTA";
- }
-
- m158("\nstarting search for entry points");
- m245();
- m158("finished search for entry points");
- m158("\nstarting " + var3 + " analysis ");
-
- label96:
- for(int var4 = 1; !f174.m48() || !f170.m48() || !f178.m48(); ++var4) {
- int var5 = Math.min(var4 * 100 / var1, 99);
- System.out.print("\r" + var5 + "% done (estimate)... ");
- int var6 = 0;
-
- while(true) {
- c66 var11 = f174;
- if (var6 >= var11.f7) {
- if (!f178.m48() && !f171.m48()) {
- var6 = 0;
-
- while(true) {
- c95 var15 = f171;
- if (var6 >= var15.f7) {
- break;
- }
-
- c93 var26 = f171.m3(var6);
- m266(var26, f178);
- ++var6;
- }
- }
-
- if (!f179.m48() && !f170.m48()) {
- var6 = 0;
-
- while(true) {
- c95 var17 = f170;
- if (var6 >= var17.f7) {
- break;
- }
-
- c93 var27 = f170.m3(var6);
- m266(var27, f179);
- ++var6;
- }
- }
-
- var6 = 0;
-
- while(true) {
- c95 var19 = f170;
- if (var6 >= var19.f7) {
- c66 var13 = f172;
-
- for(int var25 = var13.f7 - 1; var25 >= 0; --var25) {
- c59 var29 = f172.m3(var25);
- if (f175.m47(var29)) {
- f175.m42(var29);
- f173.m1(var29);
- }
-
- if (f174.m47(var29)) {
- f174.m42(var29);
- f173.m1(var29);
- }
- }
-
- f172 = new c66();
- m265();
- m263();
- m273();
- m272();
- m271();
- m270();
- continue label96;
- }
-
- c93 var28 = f170.m3(var6);
- if (!f178.m48()) {
- m266(var28, f178);
- }
-
- f171.m1(var28);
- f170.m2(var6);
- --var6;
- ++var6;
- }
- }
-
- c91 var7 = (c91)f174.m3(var6);
- m267(var7);
- f174.m2(var6);
- f175.m1(var7);
- --var6;
- ++var6;
- }
- }
-
- System.out.print("\r99% done (estimate)... ");
- m264();
- f168 = null;
- m274();
- m158("\rfinished " + var3 + " analysis \n");
- }
- }
-