mirror of
https://git.huckle.dev/Huckles-Minecraft-Archive/jpexs-decompiler.git
synced 2026-05-31 01:45:10 +00:00
AS1/2 switch detection - better handling position of default branch
This commit is contained in:
@@ -15,6 +15,7 @@ All notable changes to this project will be documented in this file.
|
||||
- AS1/2 break statement decompilation in for..in loops
|
||||
- AS2 direct editation - not generating Pop in class header ifs
|
||||
- AS1/2 deobfuscation - ActionRandom fixed for nonpositive numbers
|
||||
- AS1/2 switch statement detection - fixes of default section position
|
||||
|
||||
## [11.0.0] - 2018-01-17
|
||||
### Added
|
||||
|
||||
@@ -302,15 +302,14 @@ public class ActionGraph extends Graph {
|
||||
stack.push(set);
|
||||
} else {
|
||||
part = part.nextParts.get(1);
|
||||
//caseBodyParts.add(part);
|
||||
GraphPart defaultPart = part;
|
||||
if (code.size() > defaultPart.start && code.get(defaultPart.start) instanceof ActionJump) {
|
||||
defaultPart = defaultPart.nextParts.get(0);
|
||||
}
|
||||
|
||||
List<GraphTargetItem> caseValues = new ArrayList<>();
|
||||
boolean hasDefault = false;
|
||||
/*
|
||||
case 4:
|
||||
case 5:
|
||||
default:
|
||||
trace("5 & def");
|
||||
@@ -318,13 +317,12 @@ public class ActionGraph extends Graph {
|
||||
case 6:
|
||||
|
||||
*/
|
||||
for (int i = 0; i < caseBodyParts.size(); i++) {
|
||||
caseValues.add(caseValuesMap.get(i));
|
||||
//must go backwards to hit case 5, not case 4
|
||||
for (int i = caseBodyParts.size() - 1; i >= 0; i--) {
|
||||
if (caseBodyParts.get(i) == defaultPart) {
|
||||
i++;
|
||||
caseValuesMap.add(i, new DefaultItem());
|
||||
caseBodyParts.add(i, defaultPart);
|
||||
caseValues.add(caseValuesMap.get(i));
|
||||
DefaultItem di = new DefaultItem();
|
||||
caseValuesMap.add(i + 1, di);
|
||||
caseBodyParts.add(i + 1, defaultPart);
|
||||
hasDefault = true;
|
||||
break;
|
||||
}
|
||||
@@ -332,21 +330,48 @@ public class ActionGraph extends Graph {
|
||||
|
||||
if (!hasDefault) {
|
||||
/*
|
||||
case 1:
|
||||
trace("1");
|
||||
case 2:
|
||||
trace("2"); //no break
|
||||
default:
|
||||
trace("def");
|
||||
case 1:
|
||||
trace("1");
|
||||
...
|
||||
case 3:
|
||||
*/
|
||||
for (int i = 0; i < caseBodyParts.size(); i++) {
|
||||
if (defaultPart.leadsTo(localData, this, code, caseBodyParts.get(i), loops)) {
|
||||
caseValuesMap.add(i, new DefaultItem());
|
||||
caseBodyParts.add(i, defaultPart);
|
||||
caseValues.add(i, caseValuesMap.get(i));
|
||||
//must go backwards to hit case 2, not case 1
|
||||
for (int i = caseBodyParts.size() - 1; i >= 0; i--) {
|
||||
if (caseBodyParts.get(i).leadsTo(localData, this, code, defaultPart, loops)) {
|
||||
DefaultItem di = new DefaultItem();
|
||||
caseValuesMap.add(i + 1, di);
|
||||
caseBodyParts.add(i + 1, defaultPart);
|
||||
hasDefault = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!hasDefault) {
|
||||
/*
|
||||
case 1:
|
||||
trace("1");
|
||||
break;
|
||||
default:
|
||||
trace("def"); //no break
|
||||
case 2:
|
||||
trace("2");
|
||||
*/
|
||||
for (int i = 0; i < caseBodyParts.size(); i++) {
|
||||
if (defaultPart.leadsTo(localData, this, code, caseBodyParts.get(i), loops)) {
|
||||
DefaultItem di = new DefaultItem();
|
||||
caseValuesMap.add(i, di);
|
||||
caseBodyParts.add(i, defaultPart);
|
||||
hasDefault = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!hasDefault) {
|
||||
/*
|
||||
case 1:
|
||||
@@ -358,7 +383,6 @@ public class ActionGraph extends Graph {
|
||||
*/
|
||||
caseValuesMap.add(new DefaultItem());
|
||||
caseBodyParts.add(defaultPart);
|
||||
caseValues.add(caseValuesMap.get(caseValuesMap.size() - 1));
|
||||
}
|
||||
|
||||
GraphPart breakPart = getMostCommonPart(localData, caseBodyParts, loops);
|
||||
@@ -373,7 +397,7 @@ public class ActionGraph extends Graph {
|
||||
loops.add(currentLoop);
|
||||
List<Integer> valuesMapping = new ArrayList<>();
|
||||
List<GraphPart> caseBodies = new ArrayList<>();
|
||||
for (int i = 0; i < caseValues.size(); i++) {
|
||||
for (int i = 0; i < caseValuesMap.size(); i++) {
|
||||
GraphPart cur = caseBodyParts.get(i);
|
||||
if (!caseBodies.contains(cur)) {
|
||||
caseBodies.add(cur);
|
||||
@@ -422,15 +446,16 @@ public class ActionGraph extends Graph {
|
||||
}
|
||||
if (lastc.isEmpty()) {
|
||||
int cnt2 = 0;
|
||||
if (caseValues.get(caseValues.size() - 1) instanceof DefaultItem) {
|
||||
if (caseValuesMap.get(caseValuesMap.size() - 1) instanceof DefaultItem) {
|
||||
for (int i = valuesMapping.size() - 1; i >= 0; i--) {
|
||||
if (valuesMapping.get(i) == caseCommands.size() - 1) {
|
||||
cnt2++;
|
||||
}
|
||||
}
|
||||
|
||||
caseValuesMap.remove(caseValuesMap.size() - 1);
|
||||
valuesMapping.remove(valuesMapping.size() - 1);
|
||||
if (cnt2 == 1) {
|
||||
caseValues.remove(caseValues.size() - 1);
|
||||
valuesMapping.remove(valuesMapping.size() - 1);
|
||||
caseCommands.remove(lastc);
|
||||
}
|
||||
}
|
||||
@@ -442,13 +467,12 @@ public class ActionGraph extends Graph {
|
||||
if (!lastc.isEmpty() && (lastc.get(lastc.size() - 1) instanceof BreakItem)) {
|
||||
BreakItem bi = (BreakItem) lastc.get(lastc.size() - 1);
|
||||
lastc.remove(lastc.size() - 1);
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
ret = new ArrayList<>();
|
||||
ret.addAll(output);
|
||||
SwitchItem sti = new SwitchItem(null, switchStartItem, currentLoop, switchedObject, caseValues, caseCommands, valuesMapping);
|
||||
SwitchItem sti = new SwitchItem(null, switchStartItem, currentLoop, switchedObject, caseValuesMap, caseCommands, valuesMapping);
|
||||
ret.add(sti);
|
||||
currentLoop.phase = 2;
|
||||
if (next != null) {
|
||||
|
||||
@@ -1026,4 +1026,851 @@ public class ActionScript2Test extends ActionScript2TestBase {
|
||||
+ "var obj = {a:5,b:6,c:7};\r\n"
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void frame67_switchVariantsTest() {
|
||||
compareSrc(67, "function test1()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test2()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test3()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test4()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "default:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test5()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test6()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test7()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "default:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test8()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test9()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test10()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "default:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test11()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test12()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test13()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "default:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test14()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test15()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test16()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test17()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test18()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test19()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test20()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test21()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test22()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test23()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "default:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test24()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test25()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test26()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test27()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test28()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "default:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test29()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "default:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test30()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test31()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test32()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test33()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "default:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test34()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test35()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "default:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test36()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "default:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test37()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test38()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "default:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test39()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test40()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test41()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test42()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test43()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test44()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test45()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test46()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "default:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test47()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test48()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "default:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test49()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "default:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test50()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test51()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "default:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test52()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test53()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test54()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "default:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test55()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test56()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "default:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test57()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test58()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "trace(\"place1\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test59()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "trace(\"place2\");\r\n"
|
||||
+ "break;\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "function test60()\r\n"
|
||||
+ "{\r\n"
|
||||
+ "var _loc1_ = random(100);\r\n"
|
||||
+ "switch(_loc1_)\r\n"
|
||||
+ "{\r\n"
|
||||
+ "case 1:\r\n"
|
||||
+ "case 2:\r\n"
|
||||
+ "case 3:\r\n"
|
||||
+ "trace(\"place3\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"after switch\");\r\n"
|
||||
+ "}\r\n"
|
||||
+ "trace(\"switchVariantsTest\");\r\n"
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
BIN
libsrc/ffdec_lib/testdata/as2/as2.fla
vendored
BIN
libsrc/ffdec_lib/testdata/as2/as2.fla
vendored
Binary file not shown.
BIN
libsrc/ffdec_lib/testdata/as2/as2.swf
vendored
BIN
libsrc/ffdec_lib/testdata/as2/as2.swf
vendored
Binary file not shown.
Reference in New Issue
Block a user