decl `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 in scratch (3) in (`window`0).("dummyAddress") = undef (`window`0).("Arguments") = undef (`window`0).("main") = undef scratch_0 = newfun (0.0) (`self`14, arguments) => decl rand = undef, x = undef in scratch (11) in :RETURN:: merge x = 0.0 scratch_0 = toObj `window`0 ⌜⋆⌝ "Math" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "random"(scratch_0, scratch_1) merge if isprim scratch_2 scratch_3 = tonum scratch_2 else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge rand = scratch_3 ⌜×⌝ 10.0 :BREAK:: scratch_0 = ⌞¬⌟ rand ⌜≈⌝ 0.0 while scratch_0 merge :CONTINUE:: if isprim rand scratch_0 = tonum rand else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = rand (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge if scratch_0 ⌜%⌝ 2.0 ⌜≈⌝ 0.0 if isprim x scratch_0 = x else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = true (scratch_1).("length") = 1.0 scratch_0 = x ⌜⋆⌝ "valueOf"(x, scratch_1) merge merge if isprim rand scratch_2 = rand else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = true (scratch_3).("length") = 1.0 scratch_2 = rand ⌜⋆⌝ "valueOf"(rand, scratch_3) merge merge if isprim scratch_0 scratch_4 = scratch_0 else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("length") = 0.0 scratch_4 = scratch_0 ⌜⋆⌝ "toString"(scratch_0, scratch_5) merge merge if isprim scratch_2 scratch_6 = scratch_2 else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_6 = scratch_2 ⌜⋆⌝ "toString"(scratch_2, scratch_7) merge merge if isprim scratch_4 scratch_8 = scratch_4 else throw "TypeError" merge if isprim scratch_6 scratch_9 = scratch_6 else throw "TypeError" merge if typeof scratch_8 ⌜≡⌝ "string" scratch_10 = scratch_8 ⌜++⌝ tostr scratch_9 else if typeof scratch_9 ⌜≡⌝ "string" scratch_10 = tostr scratch_8 ⌜++⌝ scratch_9 else scratch_10 = tonum scratch_8 ⌜+⌝ tonum scratch_9 merge merge x = scratch_10 else if isprim x scratch_0 = tonum x else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = x (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge x = scratch_0 ⌜−⌝ 1.0 merge scratch_0 = toObj `window`0 ⌜⋆⌝ "Math" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "random"(scratch_0, scratch_1) merge if isprim scratch_2 scratch_3 = tonum scratch_2 else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge rand = scratch_3 ⌜×⌝ 10.0 merge scratch_0 = ⌞¬⌟ rand ⌜≈⌝ 0.0 merge merge jmp :RETURN: x scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = new `objectVar`12(scratch_1) merge (scratch_0).("prototype") = scratch_2 (`window`0).("main") = scratch_0 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = `window`0 ⌜⋆⌝ "main"(`window`0, scratch_0) merge print scratch_1