diff --git a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java index a7760be0b..dc93da4f0 100644 --- a/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java +++ b/libsrc/ffdec_lib/src/com/jpexs/decompiler/graph/Graph.java @@ -25,7 +25,6 @@ import com.jpexs.decompiler.flash.configuration.Configuration; import com.jpexs.decompiler.flash.helpers.GraphTextWriter; import com.jpexs.decompiler.graph.model.AndItem; import com.jpexs.decompiler.graph.model.BinaryOpItem; -import com.jpexs.decompiler.graph.model.BlockItem; import com.jpexs.decompiler.graph.model.BranchStackResistant; import com.jpexs.decompiler.graph.model.BreakItem; import com.jpexs.decompiler.graph.model.CommaExpressionItem; @@ -33,7 +32,6 @@ import com.jpexs.decompiler.graph.model.ContinueItem; import com.jpexs.decompiler.graph.model.DefaultItem; import com.jpexs.decompiler.graph.model.DoWhileItem; import com.jpexs.decompiler.graph.model.DuplicateItem; -import com.jpexs.decompiler.graph.model.DuplicateSourceItem; import com.jpexs.decompiler.graph.model.ExitItem; import com.jpexs.decompiler.graph.model.FalseItem; import com.jpexs.decompiler.graph.model.ForItem; @@ -56,16 +54,13 @@ import com.jpexs.decompiler.graph.model.TernarOpItem; import com.jpexs.decompiler.graph.model.TrueItem; import com.jpexs.decompiler.graph.model.UniversalLoopItem; import com.jpexs.decompiler.graph.model.WhileItem; -import com.jpexs.decompiler.graph.precontinues.GraphPrecontinueDetector; import com.jpexs.helpers.CancellableWorker; import com.jpexs.helpers.Helper; import com.jpexs.helpers.Reference; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.Arrays; -import java.util.BitSet; import java.util.Collection; -import java.util.Collections; import java.util.Comparator; import java.util.Deque; import java.util.HashMap; @@ -4087,16 +4082,25 @@ public class Graph { } if (!stack.isEmpty() && ((filteredOnTrue.size() == 1 && (filteredOnTrue.get(0) instanceof PopItem)) || ((filteredOnTrue.size() >= 2) && (filteredOnTrue.get(0) instanceof PopItem) && (filteredOnTrue.get(filteredOnTrue.size() - 1) instanceof PushItem)))) { if (filteredOnTrue.size() > 1) { + PushItem pi = (PushItem) filteredOnTrue.get(filteredOnTrue.size() - 1); + GraphTargetItem pushedValue = pi.value; GraphTargetItem rightSide = ((PushItem) filteredOnTrue.get(filteredOnTrue.size() - 1)).value; GraphTargetItem prevExpr = stack.pop(); - GraphTargetItem leftSide = expr.getNotCoercedNoDup(); + GraphTargetItem leftSide = expr.getNotCoercedNoDup(); + GraphTargetItem invertedLeftSide = leftSide; + if (invertedLeftSide instanceof NotItem) { + invertedLeftSide = ((NotItem) invertedLeftSide).value; + } else { + invertedLeftSide = invertedLeftSide.invert(null); + } prevExpr = prevExpr.getThroughDuplicate(); - boolean hideEmptyTrueFalse = true; + boolean hideEmptyTrueFalse = true; - if (leftSide instanceof DuplicateItem) { - if (!currentRet.isEmpty() && currentRet.get(currentRet.size() - 1) instanceof SetTemporaryItem) { + if (leftSide instanceof DuplicateItem + || leftSide.getNotCoerced() == prevExpr) { + if (leftSide instanceof DuplicateItem && !currentRet.isEmpty() && currentRet.get(currentRet.size() - 1) instanceof SetTemporaryItem) { DuplicateItem d = (DuplicateItem) leftSide; SetTemporaryItem st = (SetTemporaryItem) currentRet.get(currentRet.size() - 1); if (st.tempIndex == d.tempIndex) { @@ -4112,8 +4116,9 @@ public class Graph { } else { stack.push(new OrItem(dialect, null, localData.lineStartInstruction, prevExpr, rightSide)); } - } else if (leftSide.invert(null).getNotCoercedNoDup() instanceof DuplicateItem) { - if (!currentRet.isEmpty() && currentRet.get(currentRet.size() - 1) instanceof SetTemporaryItem) { + } else if (invertedLeftSide.getNotCoercedNoDup() instanceof DuplicateItem + || invertedLeftSide.getNotCoerced() == prevExpr) { //.getNotCoercedNoDup() instanceof DuplicateItem) { + if (leftSide.invert(null).getNotCoercedNoDup() instanceof DuplicateItem && !currentRet.isEmpty() && currentRet.get(currentRet.size() - 1) instanceof SetTemporaryItem) { DuplicateItem d = (DuplicateItem) leftSide.invert(null).getNotCoercedNoDup(); SetTemporaryItem st = (SetTemporaryItem) currentRet.get(currentRet.size() - 1); if (st.tempIndex == d.tempIndex) { diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2DirectEditingPCodeTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2DirectEditingPCodeTest.java index ac850e722..a1330f218 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2DirectEditingPCodeTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2DirectEditingPCodeTest.java @@ -52,6 +52,7 @@ public class ActionScript2DirectEditingPCodeTest { Configuration.simplifyExpressions.set(false); Configuration._debugCopy.set(false); Configuration.useFlexAs3Compiler.set(false); + Configuration.skipDetectionOfUninitializedClassFields.set(false); } @Test @@ -85,17 +86,7 @@ public class ActionScript2DirectEditingPCodeTest { asm.setActions(par.actionsFromString(as, Utf8Helper.charsetName)); } catch (ActionParseException | CompilationException ex) { fail("Unable to parse: " + as + "/" + asm.toString(), ex); - } - writer = new HighlightedTextWriter(new CodeFormatting(), false); - asm.getActionScriptSource(writer, null); - writer.finishHilights(); - String as2 = writer.toString(); - //as2 = asm.removePrefixAndSuffix(as2); - try { - asm.setActions(par.actionsFromString(as2, Utf8Helper.charsetName)); - } catch (ActionParseException | CompilationException ex) { - fail("Unable to parse: " + asm.getSwf().getTitleOrShortFileName() + "/" + asm.toString(), ex); - } + } writer = new HighlightedTextWriter(new CodeFormatting(), false); asm.getASMSource(ScriptExportMode.PCODE, writer, null); //asm.getActionScriptSource(writer, null); diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java index 51593a241..29622294d 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/ActionScript2Test.java @@ -48,6 +48,7 @@ public class ActionScript2Test extends ActionScript2TestBase { Configuration.decompile.set(true); Configuration.registerNameFormat.set("_loc%d_"); Configuration.autoRenameIdentifiers.set(false); + Configuration.skipDetectionOfUninitializedClassFields.set(false); swf = new SWF(new BufferedInputStream(new FileInputStream("testdata/as2/as2.swf")), false); } @@ -2669,5 +2670,17 @@ public class ActionScript2Test extends ActionScript2TestBase { + "}\r\n" ); } + + @Test + public void frame98_andIntTest() { + compareSrc(98, "trace(\"andIntTest\");\r\n" + + "var a = 1;\r\n" + + "var b = 5;\r\n" + + "if(0 && (1 || a < b))\r\n" + + "{\r\n" + + "trace(\"okay\");\r\n" + + "}\r\n" + ); + } //--FRAMES-END-- } diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassTest.java index 41fe997a3..9dd493963 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassTest.java @@ -51,7 +51,7 @@ public class ActionScript3ClassTest extends ActionScript3DecompileTestBase { addSwf("haxe", "testdata/haxe/output.swf"); addSwf("long", "testdata/as3_long/bin/as3_long.flex.swf"); } - + @BeforeMethod public void beforeMethod() { Configuration.decompilationTimeoutFile.set(5 * 60); @@ -800,12 +800,12 @@ public class ActionScript3ClassTest extends ActionScript3DecompileTestBase { + "}\n" + "}"); } - + @Test public void testLongScript() { Configuration.decompilationTimeoutFile.set(10 * 60); Configuration.decompilationTimeoutSingleMethod.set(10 * 60); - + DoABC2Tag tag = null; ABC abc = null; ScriptPack scriptPack = null; @@ -830,7 +830,7 @@ public class ActionScript3ClassTest extends ActionScript3DecompileTestBase { } catch (InterruptedException ex) { fail(); } - + String result = sb.toString(); if (result.contains("/*")) { fail(); diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java index b59e8dcc7..f7e9863db 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicAirDecompileTest.java @@ -69,6 +69,17 @@ public class ActionScript3ClassicAirDecompileTest extends ActionScript3Decompile false); } + @Test + public void testAndInt() { + decompileMethod("classic_air", "testAndInt", "var a:int = 1;\r\n" + + "var b:int = 5;\r\n" + + "if(0 && (1 || a < b))\r\n" + + "{\r\n" + + "trace(\"okay\");\r\n" + + "}\r\n", + false); + } + @Test public void testAndOrCoercion() { decompileMethod("classic_air", "testAndOrCoercion", "var x:TestInterface = ti || (ti = new TestClass()) && (ti = new TestClass());\r\n" diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java index e8f466966..52ac41aca 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/as3decompile/ActionScript3ClassicDecompileTest.java @@ -69,6 +69,17 @@ public class ActionScript3ClassicDecompileTest extends ActionScript3DecompileTes false); } + @Test + public void testAndInt() { + decompileMethod("classic", "testAndInt", "var a:int = 1;\r\n" + + "var b:int = 5;\r\n" + + "if(Boolean(0) && (Boolean(1) || Boolean(a < b)))\r\n" + + "{\r\n" + + "trace(\"okay\");\r\n" + + "}\r\n", + false); + } + @Test public void testAndOrCoercion() { decompileMethod("classic", "testAndOrCoercion", "var x:TestInterface = this.ti || (this.ti = new TestClass()) && (this.ti = new TestClass());\r\n" diff --git a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/generators/AS2DirectEditingPCodeGenerator.java b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/generators/AS2DirectEditingPCodeGenerator.java index 962c9aaaa..e4560e0b8 100644 --- a/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/generators/AS2DirectEditingPCodeGenerator.java +++ b/libsrc/ffdec_lib/test/com/jpexs/decompiler/flash/generators/AS2DirectEditingPCodeGenerator.java @@ -25,7 +25,6 @@ import com.jpexs.decompiler.flash.helpers.CodeFormatting; import com.jpexs.decompiler.flash.helpers.HighlightedTextWriter; import com.jpexs.decompiler.flash.tags.base.ASMSource; import com.jpexs.decompiler.graph.CompilationException; -import com.jpexs.decompiler.graph.TranslateException; import com.jpexs.helpers.utf8.Utf8Helper; import java.io.BufferedInputStream; import java.io.File; @@ -49,6 +48,7 @@ public class AS2DirectEditingPCodeGenerator { Configuration.simplifyExpressions.set(false); Configuration._debugCopy.set(false); Configuration.useFlexAs3Compiler.set(false); + Configuration.skipDetectionOfUninitializedClassFields.set(false); if (!outDir.exists()) { outDir.mkdirs(); @@ -71,17 +71,7 @@ public class AS2DirectEditingPCodeGenerator { asm.setActions(par.actionsFromString(as, Utf8Helper.charsetName)); } catch (ActionParseException | CompilationException ex) { fail("Unable to parse: " + as + "/" + asm.toString(), ex); - } - writer = new HighlightedTextWriter(new CodeFormatting(), false); - asm.getActionScriptSource(writer, null); - writer.finishHilights(); - String as2 = writer.toString(); - //as2 = asm.removePrefixAndSuffix(as2); - try { - asm.setActions(par.actionsFromString(as2, Utf8Helper.charsetName)); - } catch (ActionParseException | CompilationException ex) { - fail("Unable to parse: " + asm.getSwf().getTitleOrShortFileName() + "/" + asm.toString(), ex); - } + } writer = new HighlightedTextWriter(new CodeFormatting(), false); asm.getASMSource(ScriptExportMode.PCODE, writer, null); //asm.getActionScriptSource(writer, null); diff --git a/libsrc/ffdec_lib/testdata/as2/as2.swf b/libsrc/ffdec_lib/testdata/as2/as2.swf index 26cc24643..1b5fa22ba 100644 Binary files a/libsrc/ffdec_lib/testdata/as2/as2.swf and b/libsrc/ffdec_lib/testdata/as2/as2.swf differ diff --git a/libsrc/ffdec_lib/testdata/as2/as2/DOMDocument.xml b/libsrc/ffdec_lib/testdata/as2/as2/DOMDocument.xml index a1eedcc4a..420c2c945 100644 --- a/libsrc/ffdec_lib/testdata/as2/as2/DOMDocument.xml +++ b/libsrc/ffdec_lib/testdata/as2/as2/DOMDocument.xml @@ -771,9 +771,9 @@ +!3054 7490[3050 7494 3050 7457!3050 7457[3050 7441 3159 7239!3159 7239[3270 7033 3327 6947!3327 6947[3353 6908 3412 6794!3412 6794[3470 6682 3500 6639!3500 6639[3602 6491 3649 6692!3649 6692|3713 6670!3713 6670[3760 6655 3782 6655!3782 + 6655[3942 6655 3985 6781!3985 6781[4007 6844 3996 6914!3996 6914[3996 6948 3999 6995!3999 6995[4000 7031 3993 7054!3993 7054[3976 7106 3860 7224!3860 7224[3847 7237 3741 7292!3741 7292[3638 7346 3616 7372!3616 7372[3594 7396 3511 7442 +!3511 7442[3435 7483 3427 7483!3427 7483[3409 7483 3407 7468!3407 7468[3405 7453 3386 7453!3386 7453[3361 7468 3330 7483!3330 7483[3270 7512 3235 7512!3235 7512[3220 7512 3156 7501!3156 7501[3091 7490 3054 7490"/> + + + + + @@ -3587,6 +3599,7 @@ var o = {a:{}}; + @@ -3606,6 +3619,5 @@ var o = {a:{}}; - \ No newline at end of file diff --git a/libsrc/ffdec_lib/testdata/as2/as2/LIBRARY/NineSlice.xml b/libsrc/ffdec_lib/testdata/as2/as2/LIBRARY/NineSlice.xml index c36681108..a11e43d8f 100644 --- a/libsrc/ffdec_lib/testdata/as2/as2/LIBRARY/NineSlice.xml +++ b/libsrc/ffdec_lib/testdata/as2/as2/LIBRARY/NineSlice.xml @@ -37,30 +37,23 @@ - - - - - + + + + + + + + + + - - - - - - - + diff --git a/libsrc/ffdec_lib/testdata/as2/as2/LIBRARY/blue.xml b/libsrc/ffdec_lib/testdata/as2/as2/LIBRARY/blue.xml index 960671973..06719efea 100644 --- a/libsrc/ffdec_lib/testdata/as2/as2/LIBRARY/blue.xml +++ b/libsrc/ffdec_lib/testdata/as2/as2/LIBRARY/blue.xml @@ -36,8 +36,8 @@ trace("init_blue"); - + diff --git a/libsrc/ffdec_lib/testdata/as2/as2/META-INF/metadata.xml b/libsrc/ffdec_lib/testdata/as2/as2/META-INF/metadata.xml index 3d3b457ee..4e6607b81 100644 --- a/libsrc/ffdec_lib/testdata/as2/as2/META-INF/metadata.xml +++ b/libsrc/ffdec_lib/testdata/as2/as2/META-INF/metadata.xml @@ -5,8 +5,8 @@ xmlns:xmp="http://ns.adobe.com/xap/1.0/"> Adobe Flash CS4 Professional 2010-08-03T10:48:58+02:00 - 2026-03-03T23:15:56-08:00 - 2026-03-03T23:15:56-08:00 + 2026-03-26T11:12:44-07:00 + 2026-03-26T11:12:44-07:00 @@ -22,7 +22,7 @@ xmp.did:8DD71700DC9EDF1194ADAC9B23608190 xmp.did:F0EB4FF7CAC3ED11AC9DC078F41E1AA7 - xmp.iid:B144D2FC9917F111A74DE617D61B86A4 + xmp.iid:E767CC623F29F111BD07C6CC5BFA23F4 xmp.did:8DD71700DC9EDF1194ADAC9B23608190 @@ -524,6 +524,12 @@ 2010-08-03T10:48:58+02:00 Adobe Flash Professional CS6 - build 481 + + created + xmp.iid:E767CC623F29F111BD07C6CC5BFA23F4 + 2010-08-03T10:48:58+02:00 + Adobe Flash Professional CS6 - build 481 + diff --git a/libsrc/ffdec_lib/testdata/as2/as2/bin/SymDepend.cache b/libsrc/ffdec_lib/testdata/as2/as2/bin/SymDepend.cache index 34d34824b..5059f4a62 100644 Binary files a/libsrc/ffdec_lib/testdata/as2/as2/bin/SymDepend.cache and b/libsrc/ffdec_lib/testdata/as2/as2/bin/SymDepend.cache differ diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf index 75fb1d229..c7c10d4a4 100644 Binary files a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf and b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.air.swf differ diff --git a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf index 4d2f0183b..1aaa3549f 100644 Binary files a/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf and b/libsrc/ffdec_lib/testdata/as3_new/bin/as3_new.flex.swf differ diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as index bd6cfa324..3385fcff8 100644 --- a/libsrc/ffdec_lib/testdata/as3_new/src/Main.as +++ b/libsrc/ffdec_lib/testdata/as3_new/src/Main.as @@ -18,6 +18,7 @@ package { TestActivationArguments; TestAlwaysBreak; + TestAndInt; TestAndOrCoercion; TestArguments; TestBitwiseOperands; diff --git a/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestAndInt.as b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestAndInt.as new file mode 100644 index 000000000..8b983664b --- /dev/null +++ b/libsrc/ffdec_lib/testdata/as3_new/src/tests/TestAndInt.as @@ -0,0 +1,16 @@ +package tests +{ + + public class TestAndInt + { + public function run():* + { + var a:int = 1; + var b:int = 5; + if (0 && (1 || a < b)) + { + trace("okay"); + } + } + } +} diff --git a/libsrc/ffdec_lib/testexpected/as2/frame_98/DoAction.as b/libsrc/ffdec_lib/testexpected/as2/frame_98/DoAction.as new file mode 100644 index 000000000..65cef2fea --- /dev/null +++ b/libsrc/ffdec_lib/testexpected/as2/frame_98/DoAction.as @@ -0,0 +1,26 @@ +ConstantPool "andIntTest", "a", "b", "okay" +Push "andIntTest" +Trace +Push "a", 1 +DefineLocal +Push "b", 5 +DefineLocal +Push 0.0 +PushDuplicate +Not +If loc0065 +Pop +Push 1 +PushDuplicate +If loc0065 +Pop +Push "a" +GetVariable +Push "b" +GetVariable +Less2 +loc0065:Not +If loc0071 +Push "okay" +Trace +loc0071: \ No newline at end of file diff --git a/libsrc/ffdec_lib/testexpected/as3_new/tests/TestAndInt.as b/libsrc/ffdec_lib/testexpected/as3_new/tests/TestAndInt.as new file mode 100644 index 000000000..0c5fdf898 --- /dev/null +++ b/libsrc/ffdec_lib/testexpected/as3_new/tests/TestAndInt.as @@ -0,0 +1,126 @@ +package tests +{ + public class TestAndInt + { + + method + name "" + returns null + + body + maxstack 1 + localcount 1 + initscopedepth 3 + maxscopedepth 4 + + code + getlocal0 + pushscope + returnvoid + end ; code + end ; body + end ; method + + public function TestAndInt() + { + method + name "tests:TestAndInt/TestAndInt" + returns null + + body + maxstack 1 + localcount 1 + initscopedepth 4 + maxscopedepth 5 + + code + getlocal0 + pushscope + getlocal0 + constructsuper 0 + returnvoid + end ; code + end ; body + end ; method + } + + public function run() : * + { + trait method QName(PackageNamespace(""),"run") + dispid 0 + method + name "tests:TestAndInt/run" + returns null + + body + maxstack 2 + localcount 3 + initscopedepth 4 + maxscopedepth 5 + + code + getlocal0 + pushscope + debug 1, "a", 0, 13 + debug 1, "b", 1, 14 + pushbyte 1 + convert_i + setlocal1 + pushbyte 5 + convert_i + setlocal2 + pushbyte 0 + convert_b + dup + convert_b + iffalse ofs002c + pop + pushbyte 1 + convert_b + dup + convert_b + iftrue ofs002c + pop + getlocal1 + getlocal2 + lessthan + convert_b + ofs002c: + iffalse ofs0037 + findpropstrict Multiname("trace",[PackageNamespace(""),Namespace("http://adobe.com/AS3/2006/builtin"),PackageNamespace("tests"),PackageInternalNs("tests"),PrivateNamespace("tests:TestAndInt"),ProtectedNamespace("tests:TestAndInt"),StaticProtectedNs("tests:TestAndInt"),PrivateNamespace("TestAndInt.as$0")]) + pushstring "okay" + callpropvoid Multiname("trace",[PackageNamespace(""),Namespace("http://adobe.com/AS3/2006/builtin"),PackageNamespace("tests"),PackageInternalNs("tests"),PrivateNamespace("tests:TestAndInt"),ProtectedNamespace("tests:TestAndInt"),StaticProtectedNs("tests:TestAndInt"),PrivateNamespace("TestAndInt.as$0")]), 1 + ofs0037: + returnvoid + end ; code + end ; body + end ; method + } + } + } + + method + name "" + returns null + + body + maxstack 2 + localcount 1 + initscopedepth 1 + maxscopedepth 3 + + code + getlocal0 + pushscope + findpropstrict Multiname("TestAndInt",[PackageNamespace("tests")]) + getlex QName(PackageNamespace(""),"Object") + pushscope + getlex QName(PackageNamespace(""),"Object") + newclass 0 + popscope + initproperty QName(PackageNamespace("tests"),"TestAndInt") + returnvoid + end ; code + end ; body + end ; method +