diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/deobfuscation/ActionDeobfuscator.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/deobfuscation/ActionDeobfuscator.java index 785a55f1c..4309b2653 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/deobfuscation/ActionDeobfuscator.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/deobfuscation/ActionDeobfuscator.java @@ -169,11 +169,10 @@ public class ActionDeobfuscator extends ActionDeobfuscatorSimple { if (result.constantPool != null) { newIstructionCount++; } - if (!result.stack.isEmpty()) { - newIstructionCount++; - } - newIstructionCount += 2 * result.variables.size(); + newIstructionCount += result.stack.size(); + + newIstructionCount += 3 * result.variables.size(); /* 2x Push + Set or Define */ boolean allValueValid = true; for (Object value : result.variables.values()) { @@ -308,7 +307,8 @@ public class ActionDeobfuscator extends ActionDeobfuscatorSimple { } String variableName = variableNameObj.getResult().toString(); - if (!localData.variables.containsKey(variableName) && !allowGetUninitializedVariables) { + if (!localData.variables.containsKey(variableName) + && (!allowGetUninitializedVariables || !isFakeName(variableName))) { break; } } @@ -486,16 +486,8 @@ public class ActionDeobfuscator extends ActionDeobfuscatorSimple { if (action instanceof ActionDefineFunction) { ActionDefineFunction def = (ActionDefineFunction) action; if (def.paramNames.isEmpty()) { - boolean isFakeName = true; - for (char ch : def.functionName.toCharArray()) { - if (ch > 31) { - isFakeName = false; - break; - } - } - // remove funcion only when the function name contains only non printable characters - if (!isFakeName) { + if (!isFakeName(def.functionName)) { continue; } diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/deobfuscation/ActionDeobfuscatorSimple.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/deobfuscation/ActionDeobfuscatorSimple.java index 817b47c87..c3a468515 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/deobfuscation/ActionDeobfuscatorSimple.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/flash/action/deobfuscation/ActionDeobfuscatorSimple.java @@ -259,6 +259,17 @@ public class ActionDeobfuscatorSimple implements SWFDecompilerListener { return result; } + protected boolean isFakeName(String name) { + boolean isFakeName = true; + for (char ch : name.toCharArray()) { + if (ch > 31) { + return false; + } + } + + return true; + } + private void executeActions(ActionList actions, int idx, int endIdx, ExecutionResult result) throws InterruptedException { List output = new ArrayList<>(); ActionLocalData localData = new ActionLocalData();