decl t`0 = undef, `dummy`2 = undef, `arrayVar`3 = `window`0 ⌜⋆⌝ "Array", `functionVar`4 = `window`0 ⌜⋆⌝ "Function", `stringVar`5 = `window`0 ⌜⋆⌝ "String", `regexpVar`6 = `window`0 ⌜⋆⌝ "RegExp", `booleanVar`7 = `window`0 ⌜⋆⌝ "Boolean", `numberVar`8 = `window`0 ⌜⋆⌝ "Number", `dateVar`9 = `window`0 ⌜⋆⌝ "Date", `errorVar`10 = `window`0 ⌜⋆⌝ "Error", `argumentsVar`11 = `window`0 ⌜⋆⌝ "Arguments", `objectVar`12 = `window`0 ⌜⋆⌝ "Object", `dummyAddressVar`13 = `window`0 ⌜⋆⌝ "dummyAddress", window = `window`0 inID: 76440 scratch (8) in ID: 76430 (`window`0).("dummyAddress") = undef ID: 69600 (`window`0).("Arguments") = undef ID: 69640 (`window`0).("CObject") = undef ID: 69680 (`window`0).("btop") = undef ID: 69720 (`window`0).("foo") = undef ID: 69760 (`window`0).("fact") = undef ID: 69800 (`window`0).("fail") = undef ID: 69840 scratch_0 = newfun (1.0) ID: 71690 (`self`14, arguments) => ID: 71670 decl n = arguments ⌜⋆⌝ "0" in ID: 71660 scratch (11) in ID: 71650 :RETURN:: ID: 71640 if typeof n ⌜≡⌝ "string" ⌜&&⌝ false ID: 70390 scratch_0 = n ⌜≼⌝ 0.0 ID: 70020 else ID: 70390 if isprim n ID: 70310 scratch_1 = tonum n ID: 70090 else ID: 70310 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13)ID: 70140 merge ID: 70150 (scratch_2).("0") = n ID: 70190 (scratch_2).("length") = 1.0 ID: 70230 scratch_1 = `numberVar`8(`window`0, scratch_2)ID: 70280 merge ID: 70290 merge ID: 70320 scratch_0 = scratch_1 ⌜≤⌝ 0.0 ID: 70370 merge ID: 70400 if tobool scratch_0 ID: 71610 jmp :RETURN: 1.0 ID: 70440 else ID: 71610 if isprim n ID: 70730 scratch_3 = tonum n ID: 70510 else ID: 70730 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13)ID: 70560 merge ID: 70570 (scratch_4).("0") = n ID: 70610 (scratch_4).("length") = 1.0 ID: 70650 scratch_3 = `numberVar`8(`window`0, scratch_4)ID: 70700 merge ID: 70710 merge ID: 70740 scratch_5 = new `argumentsVar`11(`dummyAddressVar`13)ID: 70780 merge ID: 70790 (scratch_5).("0") = scratch_3 ⌜−⌝ 1.0 ID: 70850 (scratch_5).("length") = 1.0 ID: 70890 scratch_6 = `window`0 ⌜⋆⌝ "fact"(`window`0, scratch_5)ID: 70960 merge ID: 70970 if isprim n ID: 71250 scratch_7 = tonum n ID: 71030 else ID: 71250 scratch_8 = new `argumentsVar`11(`dummyAddressVar`13)ID: 71080 merge ID: 71090 (scratch_8).("0") = n ID: 71130 (scratch_8).("length") = 1.0 ID: 71170 scratch_7 = `numberVar`8(`window`0, scratch_8)ID: 71220 merge ID: 71230 merge ID: 71260 if isprim scratch_6 ID: 71540 scratch_9 = tonum scratch_6 ID: 71320 else ID: 71540 scratch_10 = new `argumentsVar`11(`dummyAddressVar`13)ID: 71370 merge ID: 71380 (scratch_10).("0") = scratch_6 ID: 71420 (scratch_10).("length") = 1.0 ID: 71460 scratch_9 = `numberVar`8(`window`0, scratch_10)ID: 71510 merge ID: 71520 merge ID: 71550 jmp :RETURN: scratch_7 ⌜×⌝ scratch_9 ID: 71590 merge ID: 71620 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) ID: 71730 merge ID: 71740 (scratch_1).("length") = 0.0 ID: 71780 scratch_2 = new `objectVar`12(scratch_1) ID: 71820 merge ID: 71830 (scratch_0).("prototype") = scratch_2 ID: 71870 (`window`0).("fact") = scratch_0 ID: 71910 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) ID: 71950 merge ID: 71960 (scratch_0).("0") = 3.0 ID: 72000 (scratch_0).("length") = 1.0 ID: 72040 scratch_1 = `window`0 ⌜⋆⌝ "fact"(`window`0, scratch_0) ID: 72110 merge ID: 72120 (`window`0).("btop") = scratch_1 ⌜≡⌝ 6.0 ID: 72180 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) ID: 72220 merge ID: 72230 (scratch_0).("0") = `window`0 ⌜⋆⌝ "btop" ID: 72290 (scratch_0).("length") = 1.0 ID: 72330 scratch_1 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_0) ID: 72400 merge ID: 72410 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) ID: 72450 merge ID: 72460 (scratch_0).("length") = 0.0 ID: 72500 scratch_1 = new `objectVar`12(scratch_0) ID: 72540 (scratch_1).("FAIL") = "failure" ID: 72580 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) ID: 72620 merge ID: 72630 (scratch_2).("length") = 0.0 ID: 72670 scratch_3 = new `objectVar`12(scratch_2) ID: 72710 (scratch_3).("results") = scratch_1 ID: 72750 (scratch_3).("valid") = true ID: 72790 (`window`0).("CObject") = scratch_3 ID: 72830 scratch_0 = toObj `window`0 ⌜⋆⌝ "CObject" ID: 72880 scratch_1 = toObj scratch_0 ⌜⋆⌝ "results" ID: 72930 (`window`0).("fail") = scratch_1 ⌜⋆⌝ "FAIL" ID: 72990 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) ID: 73030 merge ID: 73040 (scratch_0).("0") = `window`0 ⌜⋆⌝ "fail" ID: 73100 (scratch_0).("length") = 1.0 ID: 73140 scratch_1 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_0) ID: 73210 merge ID: 73220 scratch_0 = newfun (1.0) ID: 73580 (`self`14, arguments) => ID: 73560 decl aid = arguments ⌜⋆⌝ "0" in ID: 73550 scratch (2) in ID: 73540 :RETURN:: ID: 73530 if tobool aid ID: 73500 jmp :RETURN: `self`14 ID: 73330 else ID: 73500 scratch_0 = toObj `window`0 ⌜⋆⌝ "CObject" ID: 73390 scratch_1 = toObj scratch_0 ⌜⋆⌝ "results" ID: 73440 throw scratch_1 ⌜⋆⌝ "FAIL" ID: 73480 merge ID: 73510 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) ID: 73620 merge ID: 73630 (scratch_1).("length") = 0.0 ID: 73670 scratch_2 = new `objectVar`12(scratch_1) ID: 73710 merge ID: 73720 (scratch_0).("prototype") = scratch_2 ID: 73760 scratch_3 = newfun (1.0) ID: 74270 (`self`14, arguments) => ID: 74250 decl p = arguments ⌜⋆⌝ "0", isValid = undef in ID: 74240 scratch (2) in ID: 74230 :RETURN:: ID: 74220 if tobool `window`0 ⌜⋆⌝ "btop" ID: 74050 scratch_0 = toObj `window`0 ⌜⋆⌝ "CObject" ID: 73940 scratch_1 = scratch_0 ⌜⋆⌝ "valid" ID: 73990 else ID: 74050 scratch_1 = p ID: 74030 merge ID: 74060 isValid = scratch_1 ID: 74090 scratch_0 = toObj `window`0 ⌜⋆⌝ "CObject" ID: 74140 (scratch_0).("reverse") = ⌞¬⌟ tobool isValid ID: 74200 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) ID: 74310 merge ID: 74320 (scratch_4).("length") = 0.0 ID: 74360 scratch_5 = new `objectVar`12(scratch_4) ID: 74400 merge ID: 74410 (scratch_3).("prototype") = scratch_5 ID: 74450 scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) ID: 74490 merge ID: 74500 (scratch_6).("length") = 0.0 ID: 74540 scratch_7 = new `objectVar`12(scratch_6) ID: 74580 (scratch_7).("Qi") = scratch_0 ID: 74620 (scratch_7).("olchange") = scratch_3 ID: 74660 (`window`0).("foo") = scratch_7 ID: 74700 try ID: 76410 scratch_0 = toObj `window`0 ⌜⋆⌝ "foo" ID: 74750 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) ID: 74790 merge ID: 74800 (scratch_1).("0") = `window`0 ⌜⋆⌝ "btop" ID: 74860 (scratch_1).("length") = 1.0 ID: 74900 scratch_2 = scratch_0 ⌜⋆⌝ "Qi"(scratch_0, scratch_1) ID: 74970 merge ID: 74980 scratch_3 = toObj scratch_2 ID: 75010 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) ID: 75050 merge ID: 75060 (scratch_4).("0") = false ID: 75100 (scratch_4).("length") = 1.0 ID: 75140 scratch_5 = scratch_3 ⌜⋆⌝ "olchange"(scratch_3, scratch_4) ID: 75210 merge ID: 75220 scratch_0 = toObj `window`0 ⌜⋆⌝ "CObject" ID: 75270 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) ID: 75310 merge ID: 75320 (scratch_1).("0") = scratch_0 ⌜⋆⌝ "reverse" ID: 75380 (scratch_1).("length") = 1.0 ID: 75420 scratch_2 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_1) ID: 75490 merge ID: 75500 scratch_0 = toObj `window`0 ⌜⋆⌝ "foo" ID: 75550 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) ID: 75590 merge ID: 75600 (scratch_1).("0") = `window`0 ⌜⋆⌝ "btop" ID: 75660 (scratch_1).("length") = 1.0 ID: 75700 scratch_2 = scratch_0 ⌜⋆⌝ "Qi"(scratch_0, scratch_1) ID: 75770 merge ID: 75780 scratch_3 = toObj scratch_2 ID: 75810 (scratch_3).("bar") = 42.0 ID: 75850 scratch_0 = toObj `window`0 ⌜⋆⌝ "foo" ID: 75900 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) ID: 75940 merge ID: 75950 (scratch_1).("0") = scratch_0 ⌜⋆⌝ "bar" ID: 76010 (scratch_1).("length") = 1.0 ID: 76050 scratch_2 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_1) ID: 76120 merge ID: 76130 catch t`0 ID: 76410 merge ID: 76160 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) ID: 76200 merge ID: 76210 (scratch_0).("0") = "Caught" ID: 76250 (scratch_0).("length") = 1.0 ID: 76290 scratch_1 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_0) ID: 76360 merge ID: 76370 finally ID: 76410 merge ID: 76390