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 (5) in (`window`0).("dummyAddress") = undef (`window`0).("Arguments") = undef scratch_0 = newfun (3.0) (`self`14, arguments) => decl name = arguments ⌜⋆⌝ "0", rval = arguments ⌜⋆⌝ "1", f = arguments ⌜⋆⌝ "2" in scratch (2) in :RETURN:: scratch_0 = toObj arguments if scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ 2.0 f = rval else `dummy`2 = undef merge scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = f(`window`0, scratch_0) merge 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).("asyncTest") = scratch_0 (`window`0).("test") = scratch_0 scratch_0 = newfun (0.0) (`self`14, arguments) => :RETURN:: decl `dummy`2 = null in `dummy`2 = undef 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).("ok") = scratch_0 (`window`0).("deepEqual") = scratch_0 (`window`0).("strictEqual") = scratch_0 (`window`0).("notEqual") = scratch_0 (`window`0).("equal") = scratch_0 (`window`0).("stop") = scratch_0 (`window`0).("start") = scratch_0 (`window`0).("expect") = scratch_0 (`window`0).("moduleTeardown") = scratch_0 (`window`0).("module") = scratch_0 scratch_0 = newfun (1.0) (`self`14, arguments) => decl f = arguments ⌜⋆⌝ "0", t`0 = undef in scratch (2) in :RETURN:: try scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = f(`window`0, scratch_0) merge catch t`0 merge decl `dummy`2 = null in `dummy`2 = undef finally merge 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).("raises") = scratch_0 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = "Action" (scratch_0).("length") = 1.0 scratch_1 = `window`0 ⌜⋆⌝ "module"(`window`0, scratch_0) merge scratch_0 = newfun (0.0) (`self`14, arguments) => decl Utils = undef, Dictionary = undef, State = undef, Functions = undef, Types = undef, Yielder = undef, IEnumerator = undef, Enumerable = undef, ArrayEnumerable = undef, Grouping = undef, OrderedEnumerable = undef, Lookup = undef, SortContext = undef in scratch (219) in :RETURN:: scratch_0 = newfun (1.0) (`self`14, arguments) => decl getEnumerator = arguments ⌜⋆⌝ "0" in scratch (1) in :RETURN:: scratch_0 = toObj `self`14 (scratch_0).("GetEnumerator") = getEnumerator 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 Enumerable = scratch_0 scratch_0 = toObj Enumerable scratch_1 = newfun (0.0) (`self`14, arguments) => decl args = undef in scratch (5) in :RETURN:: scratch_0 = toObj arguments if ⌞¬⌟ typeof `window`0 ⌜⋆⌝ "Array" ⌜≡⌝ "function" throw "TypeError" else `dummy`2 = undef merge if scratch_0 ⌜⋆⌝ "0" instanceof `window`0 ⌜⋆⌝ "Array" ⌜⋆⌝ "prototype" scratch_1 = toObj arguments scratch_2 = scratch_1 ⌜⋆⌝ tostr 0.0 else scratch_2 = arguments merge args = scratch_2 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (7) in :RETURN:: scratch_0 = toObj Functions scratch_1 = newfun (0.0) (`self`14, arguments) => scratch (17) in :RETURN:: 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 scratch_3 = toObj args if isprim scratch_2 scratch_4 = tonum scratch_2 else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_2 (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge if isprim scratch_3 ⌜⋆⌝ "length" scratch_6 = tonum scratch_3 ⌜⋆⌝ "length" else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_3 ⌜⋆⌝ "length" (scratch_7).("length") = 1.0 scratch_6 = `numberVar`8(`window`0, scratch_7) merge merge scratch_8 = toObj `window`0 ⌜⋆⌝ "Math" scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_4 ⌜×⌝ scratch_6 (scratch_9).("length") = 1.0 scratch_10 = scratch_8 ⌜⋆⌝ "floor"(scratch_8, scratch_9) merge scratch_11 = toObj args if isprim scratch_10 scratch_12 = tostr scratch_10 else scratch_13 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_13).("length") = 0.0 scratch_12 = scratch_10 ⌜⋆⌝ "toString"(scratch_10, scratch_13) merge merge scratch_14 = toObj `self`14 scratch_15 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_15).("0") = scratch_11 ⌜⋆⌝ scratch_12 (scratch_15).("length") = 1.0 scratch_16 = scratch_14 ⌜⋆⌝ "Yield"(scratch_14, scratch_15) merge jmp :RETURN: scratch_16 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 scratch_4 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "Blank" (scratch_5).("1") = scratch_1 (scratch_5).("2") = scratch_4 ⌜⋆⌝ "Blank" (scratch_5).("length") = 3.0 scratch_6 = new IEnumerator(scratch_5) merge merge jmp :RETURN: scratch_6 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("Choice") = scratch_1 scratch_0 = toObj Enumerable scratch_1 = newfun (0.0) (`self`14, arguments) => decl args = undef in scratch (5) in :RETURN:: scratch_0 = toObj arguments if ⌞¬⌟ typeof `window`0 ⌜⋆⌝ "Array" ⌜≡⌝ "function" throw "TypeError" else `dummy`2 = undef merge if scratch_0 ⌜⋆⌝ "0" instanceof `window`0 ⌜⋆⌝ "Array" ⌜⋆⌝ "prototype" scratch_1 = toObj arguments scratch_2 = scratch_1 ⌜⋆⌝ tostr 0.0 else scratch_2 = arguments merge args = scratch_2 scratch_0 = newfun (0.0) (`self`14, arguments) => decl index = undef in scratch (7) in :RETURN:: index = 0.0 scratch_0 = toObj Functions scratch_1 = newfun (0.0) (`self`14, arguments) => scratch (9) in :RETURN:: scratch_0 = toObj args if typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" ⌜&&⌝ typeof index ⌜≡⌝ "string" scratch_1 = scratch_0 ⌜⋆⌝ "length" ⌜≼⌝ index else if isprim scratch_0 ⌜⋆⌝ "length" scratch_2 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim index scratch_4 = tonum index else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = index (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_1 = scratch_2 ⌜≤⌝ scratch_4 merge if tobool scratch_1 index = 0.0 else `dummy`2 = undef merge if isprim index scratch_0 = tonum index else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = index (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge scratch_2 = scratch_0 index = scratch_2 ⌜+⌝ 1.0 scratch_3 = toObj args if isprim scratch_2 scratch_4 = tostr scratch_2 else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("length") = 0.0 scratch_4 = scratch_2 ⌜⋆⌝ "toString"(scratch_2, scratch_5) merge merge scratch_6 = toObj `self`14 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_3 ⌜⋆⌝ scratch_4 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "Yield"(scratch_6, scratch_7) merge jmp :RETURN: scratch_8 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 scratch_4 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "Blank" (scratch_5).("1") = scratch_1 (scratch_5).("2") = scratch_4 ⌜⋆⌝ "Blank" (scratch_5).("length") = 3.0 scratch_6 = new IEnumerator(scratch_5) merge merge jmp :RETURN: scratch_6 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("Cycle") = scratch_1 scratch_0 = toObj Enumerable scratch_1 = newfun (0.0) (`self`14, arguments) => scratch (5) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (7) in :RETURN:: scratch_0 = toObj Functions scratch_1 = newfun (0.0) (`self`14, arguments) => :RETURN:: jmp :RETURN: false scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 scratch_4 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "Blank" (scratch_5).("1") = scratch_1 (scratch_5).("2") = scratch_4 ⌜⋆⌝ "Blank" (scratch_5).("length") = 3.0 scratch_6 = new IEnumerator(scratch_5) merge merge jmp :RETURN: scratch_6 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("Empty") = scratch_1 scratch_0 = toObj Enumerable scratch_1 = newfun (1.0) (`self`14, arguments) => decl obj = arguments ⌜⋆⌝ "0" in scratch (5) in :RETURN:: if obj ⌜≈⌝ null scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Empty"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 else `dummy`2 = undef merge if ⌞¬⌟ typeof Enumerable ⌜≡⌝ "function" throw "TypeError" else `dummy`2 = undef merge if obj instanceof Enumerable ⌜⋆⌝ "prototype" jmp :RETURN: obj else `dummy`2 = undef merge scratch_0 = toObj Types if typeof obj ⌜≈⌝ scratch_0 ⌜⋆⌝ "Number" ⌜≡⌝ false scratch_1 = toObj Types scratch_2 = typeof obj ⌜≈⌝ scratch_1 ⌜⋆⌝ "Boolean" else scratch_2 = typeof obj ⌜≈⌝ scratch_0 ⌜⋆⌝ "Number" merge if tobool scratch_2 scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = obj (scratch_1).("1") = 1.0 (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "Repeat"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 else `dummy`2 = undef merge scratch_0 = toObj Types if typeof obj ⌜≈⌝ scratch_0 ⌜⋆⌝ "String" scratch_0 = newfun (0.0) (`self`14, arguments) => decl index = undef in scratch (7) in :RETURN:: index = 0.0 scratch_0 = toObj Functions scratch_1 = newfun (0.0) (`self`14, arguments) => scratch (16) in :RETURN:: scratch_0 = toObj obj if typeof index ⌜≡⌝ "string" ⌜&&⌝ typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_1 = index ⌜≺⌝ scratch_0 ⌜⋆⌝ "length" else if isprim index scratch_2 = tonum index else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = index (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim scratch_0 ⌜⋆⌝ "length" scratch_4 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_1 = scratch_2 ⌜<⌝ scratch_4 merge if tobool scratch_1 if isprim index scratch_6 = tonum index else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = index (scratch_7).("length") = 1.0 scratch_6 = `numberVar`8(`window`0, scratch_7) merge merge scratch_8 = scratch_6 index = scratch_8 ⌜+⌝ 1.0 scratch_9 = toObj obj scratch_10 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_10).("0") = scratch_8 (scratch_10).("length") = 1.0 scratch_11 = scratch_9 ⌜⋆⌝ "charAt"(scratch_9, scratch_10) merge scratch_12 = toObj `self`14 scratch_13 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_13).("0") = scratch_11 (scratch_13).("length") = 1.0 scratch_14 = scratch_12 ⌜⋆⌝ "Yield"(scratch_12, scratch_13) merge scratch_15 = scratch_14 else scratch_15 = false merge jmp :RETURN: scratch_15 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 scratch_4 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "Blank" (scratch_5).("1") = scratch_1 (scratch_5).("2") = scratch_4 ⌜⋆⌝ "Blank" (scratch_5).("length") = 3.0 scratch_6 = new IEnumerator(scratch_5) merge merge jmp :RETURN: scratch_6 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 else `dummy`2 = undef merge scratch_0 = toObj Types if ⌞¬⌟ typeof obj ⌜≈⌝ scratch_0 ⌜⋆⌝ "Function" scratch_0 = toObj obj scratch_1 = toObj Types if typeof scratch_0 ⌜⋆⌝ "length" ⌜≈⌝ scratch_1 ⌜⋆⌝ "Number" if isprim ArrayEnumerable throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = obj (scratch_0).("length") = 1.0 scratch_1 = new ArrayEnumerable(scratch_0) merge merge jmp :RETURN: scratch_1 else `dummy`2 = undef merge if ⌞¬⌟ typeof `window`0 ⌜⋆⌝ "Object" ⌜≡⌝ "function" throw "TypeError" else `dummy`2 = undef merge if ⌞¬⌟ obj instanceof `window`0 ⌜⋆⌝ "Object" ⌜⋆⌝ "prototype" ⌜≡⌝ true scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = obj (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "IsIEnumerable"(scratch_0, scratch_1) merge scratch_3 = scratch_2 else scratch_3 = ⌞¬⌟ obj instanceof `window`0 ⌜⋆⌝ "Object" ⌜⋆⌝ "prototype" merge if tobool scratch_3 scratch_0 = newfun (0.0) (`self`14, arguments) => decl enumerator = undef, isFirst = undef in scratch (9) in :RETURN:: isFirst = true scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (2) in :RETURN:: if isprim `window`0 ⌜⋆⌝ "Enumerator" throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = obj (scratch_0).("length") = 1.0 scratch_1 = new `window`0 ⌜⋆⌝ "Enumerator"(scratch_0) merge merge enumerator = scratch_1 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (10) in :RETURN:: if tobool isFirst isFirst = false else scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "moveNext"(scratch_0, scratch_1) merge merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "atEnd"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_3 = false else scratch_4 = toObj enumerator scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("length") = 0.0 scratch_6 = scratch_4 ⌜⋆⌝ "item"(scratch_4, scratch_5) merge scratch_7 = toObj `self`14 scratch_8 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_8).("0") = scratch_6 (scratch_8).("length") = 1.0 scratch_9 = scratch_7 ⌜⋆⌝ "Yield"(scratch_7, scratch_8) merge scratch_3 = scratch_9 merge jmp :RETURN: scratch_3 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_0 (scratch_7).("1") = scratch_3 (scratch_7).("2") = scratch_6 ⌜⋆⌝ "Blank" (scratch_7).("length") = 3.0 scratch_8 = new IEnumerator(scratch_7) merge merge jmp :RETURN: scratch_8 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 else `dummy`2 = undef merge else `dummy`2 = undef merge scratch_0 = newfun (0.0) (`self`14, arguments) => decl index = undef, array = undef in scratch (9) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("length") = 0.0 array = scratch_1 index = 0.0 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (8) in :RETURN:: scratch_0 = toObj obj :BREAK:: for scratch_1 scratch_0 merge (`window`0).("key") = scratch_1 :CONTINUE:: scratch_0 = toObj obj if isprim `window`0 ⌜⋆⌝ "key" scratch_1 = tostr `window`0 ⌜⋆⌝ "key" else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_1 = `window`0 ⌜⋆⌝ "key" ⌜⋆⌝ "toString"(`window`0 ⌜⋆⌝ "key", scratch_2) merge merge if ⌞¬⌟ typeof `window`0 ⌜⋆⌝ "Function" ⌜≡⌝ "function" throw "TypeError" else `dummy`2 = undef merge if ⌞¬⌟ scratch_0 ⌜⋆⌝ scratch_1 instanceof `window`0 ⌜⋆⌝ "Function" ⌜⋆⌝ "prototype" scratch_0 = toObj obj if isprim `window`0 ⌜⋆⌝ "key" scratch_1 = tostr `window`0 ⌜⋆⌝ "key" else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_1 = `window`0 ⌜⋆⌝ "key" ⌜⋆⌝ "toString"(`window`0 ⌜⋆⌝ "key", scratch_2) merge merge scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) (scratch_4).("Key") = `window`0 ⌜⋆⌝ "key" (scratch_4).("Value") = scratch_0 ⌜⋆⌝ scratch_1 scratch_5 = toObj array scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = scratch_4 (scratch_6).("length") = 1.0 scratch_7 = scratch_5 ⌜⋆⌝ "push"(scratch_5, scratch_6) merge else `dummy`2 = undef merge merge merge merge 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (16) in :RETURN:: scratch_0 = toObj array if typeof index ⌜≡⌝ "string" ⌜&&⌝ typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_1 = index ⌜≺⌝ scratch_0 ⌜⋆⌝ "length" else if isprim index scratch_2 = tonum index else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = index (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim scratch_0 ⌜⋆⌝ "length" scratch_4 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_1 = scratch_2 ⌜<⌝ scratch_4 merge if tobool scratch_1 if isprim index scratch_6 = tonum index else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = index (scratch_7).("length") = 1.0 scratch_6 = `numberVar`8(`window`0, scratch_7) merge merge scratch_8 = scratch_6 index = scratch_8 ⌜+⌝ 1.0 scratch_9 = toObj array if isprim scratch_8 scratch_10 = tostr scratch_8 else scratch_11 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_11).("length") = 0.0 scratch_10 = scratch_8 ⌜⋆⌝ "toString"(scratch_8, scratch_11) merge merge scratch_12 = toObj `self`14 scratch_13 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_13).("0") = scratch_9 ⌜⋆⌝ scratch_10 (scratch_13).("length") = 1.0 scratch_14 = scratch_12 ⌜⋆⌝ "Yield"(scratch_12, scratch_13) merge scratch_15 = scratch_14 else scratch_15 = false merge jmp :RETURN: scratch_15 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_0 (scratch_7).("1") = scratch_3 (scratch_7).("2") = scratch_6 ⌜⋆⌝ "Blank" (scratch_7).("length") = 3.0 scratch_8 = new IEnumerator(scratch_7) merge merge jmp :RETURN: scratch_8 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("From") = scratch_1 scratch_4 = toObj Enumerable scratch_5 = newfun (1.0) (`self`14, arguments) => decl element = arguments ⌜⋆⌝ "0" in scratch (3) in :RETURN:: scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = element (scratch_1).("1") = 1.0 (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "Repeat"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("length") = 0.0 scratch_7 = new `objectVar`12(scratch_6) merge (scratch_5).("prototype") = scratch_7 (scratch_4).("Return") = scratch_5 scratch_0 = toObj Enumerable scratch_1 = newfun (3.0) (`self`14, arguments) => decl input = arguments ⌜⋆⌝ "0", pattern = arguments ⌜⋆⌝ "1", flags = arguments ⌜⋆⌝ "2" in scratch (13) in :RETURN:: if flags ⌜≈⌝ null flags = "" else `dummy`2 = undef merge if ⌞¬⌟ typeof `window`0 ⌜⋆⌝ "RegExp" ⌜≡⌝ "function" throw "TypeError" else `dummy`2 = undef merge if pattern instanceof `window`0 ⌜⋆⌝ "RegExp" ⌜⋆⌝ "prototype" scratch_0 = toObj pattern if tobool scratch_0 ⌜⋆⌝ "ignoreCase" scratch_1 = "i" else scratch_1 = "" merge if isprim flags scratch_2 = flags else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = true (scratch_3).("length") = 1.0 scratch_2 = flags ⌜⋆⌝ "valueOf"(flags, scratch_3) merge merge if isprim scratch_1 scratch_4 = scratch_1 else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = true (scratch_5).("length") = 1.0 scratch_4 = scratch_1 ⌜⋆⌝ "valueOf"(scratch_1, 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 scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("length") = 0.0 scratch_8 = scratch_4 ⌜⋆⌝ "toString"(scratch_4, scratch_9) merge merge if isprim scratch_6 scratch_10 = scratch_6 else throw "TypeError" merge if isprim scratch_8 scratch_11 = scratch_8 else throw "TypeError" merge if typeof scratch_10 ⌜≡⌝ "string" scratch_12 = scratch_10 ⌜++⌝ tostr scratch_11 else if typeof scratch_11 ⌜≡⌝ "string" scratch_12 = tostr scratch_10 ⌜++⌝ scratch_11 else scratch_12 = tonum scratch_10 ⌜+⌝ tonum scratch_11 merge merge flags = scratch_12 scratch_0 = toObj pattern if tobool scratch_0 ⌜⋆⌝ "multiline" scratch_1 = "m" else scratch_1 = "" merge if isprim flags scratch_2 = flags else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = true (scratch_3).("length") = 1.0 scratch_2 = flags ⌜⋆⌝ "valueOf"(flags, scratch_3) merge merge if isprim scratch_1 scratch_4 = scratch_1 else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = true (scratch_5).("length") = 1.0 scratch_4 = scratch_1 ⌜⋆⌝ "valueOf"(scratch_1, 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 scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("length") = 0.0 scratch_8 = scratch_4 ⌜⋆⌝ "toString"(scratch_4, scratch_9) merge merge if isprim scratch_6 scratch_10 = scratch_6 else throw "TypeError" merge if isprim scratch_8 scratch_11 = scratch_8 else throw "TypeError" merge if typeof scratch_10 ⌜≡⌝ "string" scratch_12 = scratch_10 ⌜++⌝ tostr scratch_11 else if typeof scratch_11 ⌜≡⌝ "string" scratch_12 = tostr scratch_10 ⌜++⌝ scratch_11 else scratch_12 = tonum scratch_10 ⌜+⌝ tonum scratch_11 merge merge flags = scratch_12 scratch_0 = toObj pattern pattern = scratch_0 ⌜⋆⌝ "source" else `dummy`2 = undef merge scratch_0 = toObj flags scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = "g" (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "indexOf"(scratch_0, scratch_1) merge if scratch_2 ⌜≡⌝ -1.0 if isprim flags scratch_3 = flags else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = true (scratch_4).("length") = 1.0 scratch_3 = flags ⌜⋆⌝ "valueOf"(flags, scratch_4) merge merge if isprim scratch_3 scratch_5 = scratch_3 else scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "toString"(scratch_3, scratch_6) merge merge if isprim scratch_5 scratch_7 = scratch_5 else throw "TypeError" merge if typeof scratch_7 ⌜≡⌝ "string" scratch_8 = scratch_7 ⌜++⌝ "g" else scratch_8 = tostr scratch_7 ⌜++⌝ "g" merge flags = scratch_8 else `dummy`2 = undef merge scratch_0 = newfun (0.0) (`self`14, arguments) => decl regex = undef in scratch (9) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (2) in :RETURN:: if isprim `window`0 ⌜⋆⌝ "RegExp" throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = pattern (scratch_0).("1") = flags (scratch_0).("length") = 2.0 scratch_1 = new `window`0 ⌜⋆⌝ "RegExp"(scratch_0) merge merge regex = scratch_1 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 scratch_3 = newfun (0.0) (`self`14, arguments) => decl match = undef in scratch (4) in :RETURN:: scratch_0 = toObj regex scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = input (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "exec"(scratch_0, scratch_1) merge match = scratch_2 if tobool match scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = match (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Yield"(scratch_0, scratch_1) merge scratch_3 = scratch_2 else scratch_3 = false merge jmp :RETURN: scratch_3 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_0 (scratch_7).("1") = scratch_3 (scratch_7).("2") = scratch_6 ⌜⋆⌝ "Blank" (scratch_7).("length") = 3.0 scratch_8 = new IEnumerator(scratch_7) merge merge jmp :RETURN: scratch_8 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("Matches") = scratch_1 scratch_0 = toObj Enumerable scratch_1 = newfun (3.0) (`self`14, arguments) => decl start = arguments ⌜⋆⌝ "0", count = arguments ⌜⋆⌝ "1", step = arguments ⌜⋆⌝ "2" in scratch (6) in :RETURN:: if step ⌜≈⌝ null step = 1.0 else `dummy`2 = undef merge scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = start (scratch_1).("1") = step (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "ToInfinity"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = count (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Take"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("Range") = scratch_1 scratch_0 = toObj Enumerable scratch_1 = newfun (3.0) (`self`14, arguments) => decl start = arguments ⌜⋆⌝ "0", count = arguments ⌜⋆⌝ "1", step = arguments ⌜⋆⌝ "2" in scratch (6) in :RETURN:: if step ⌜≈⌝ null step = 1.0 else `dummy`2 = undef merge scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = start (scratch_1).("1") = step (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "ToNegativeInfinity"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = count (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Take"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("RangeDown") = scratch_1 scratch_0 = toObj Enumerable scratch_1 = newfun (3.0) (`self`14, arguments) => decl start = arguments ⌜⋆⌝ "0", to = arguments ⌜⋆⌝ "1", step = arguments ⌜⋆⌝ "2" in scratch (24) in :RETURN:: if step ⌜≈⌝ null step = 1.0 else `dummy`2 = undef merge if typeof start ⌜≡⌝ "string" ⌜&&⌝ typeof to ⌜≡⌝ "string" scratch_0 = start ⌜≺⌝ to else if isprim start scratch_1 = tonum start else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = start (scratch_2).("length") = 1.0 scratch_1 = `numberVar`8(`window`0, scratch_2) merge merge if isprim to scratch_3 = tonum to else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = to (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge scratch_0 = scratch_1 ⌜<⌝ scratch_3 merge if tobool scratch_0 scratch_5 = toObj Enumerable scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = start (scratch_6).("1") = step (scratch_6).("length") = 2.0 scratch_7 = scratch_5 ⌜⋆⌝ "ToInfinity"(scratch_5, scratch_6) merge scratch_8 = newfun (1.0) (`self`14, arguments) => decl i = arguments ⌜⋆⌝ "0" in scratch (5) in :RETURN:: if typeof i ⌜≡⌝ "string" ⌜&&⌝ typeof to ⌜≡⌝ "string" scratch_0 = i ⌜≼⌝ to else if isprim i scratch_1 = tonum i else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = i (scratch_2).("length") = 1.0 scratch_1 = `numberVar`8(`window`0, scratch_2) merge merge if isprim to scratch_3 = tonum to else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = to (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge scratch_0 = scratch_1 ⌜≤⌝ scratch_3 merge jmp :RETURN: scratch_0 scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("length") = 0.0 scratch_10 = new `objectVar`12(scratch_9) merge (scratch_8).("prototype") = scratch_10 scratch_11 = toObj scratch_7 scratch_12 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_12).("0") = scratch_8 (scratch_12).("length") = 1.0 scratch_13 = scratch_11 ⌜⋆⌝ "TakeWhile"(scratch_11, scratch_12) merge scratch_14 = scratch_13 else scratch_15 = toObj Enumerable scratch_16 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_16).("0") = start (scratch_16).("1") = step (scratch_16).("length") = 2.0 scratch_17 = scratch_15 ⌜⋆⌝ "ToNegativeInfinity"(scratch_15, scratch_16) merge scratch_18 = newfun (1.0) (`self`14, arguments) => decl i = arguments ⌜⋆⌝ "0" in scratch (5) in :RETURN:: if typeof to ⌜≡⌝ "string" ⌜&&⌝ typeof i ⌜≡⌝ "string" scratch_0 = to ⌜≼⌝ i else if isprim to scratch_1 = tonum to else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = to (scratch_2).("length") = 1.0 scratch_1 = `numberVar`8(`window`0, scratch_2) merge merge if isprim i scratch_3 = tonum i else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = i (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge scratch_0 = scratch_1 ⌜≤⌝ scratch_3 merge jmp :RETURN: scratch_0 scratch_19 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_19).("length") = 0.0 scratch_20 = new `objectVar`12(scratch_19) merge (scratch_18).("prototype") = scratch_20 scratch_21 = toObj scratch_17 scratch_22 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_22).("0") = scratch_18 (scratch_22).("length") = 1.0 scratch_23 = scratch_21 ⌜⋆⌝ "TakeWhile"(scratch_21, scratch_22) merge scratch_14 = scratch_23 merge jmp :RETURN: scratch_14 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("RangeTo") = scratch_1 scratch_0 = toObj Enumerable scratch_1 = newfun (2.0) (`self`14, arguments) => decl obj = arguments ⌜⋆⌝ "0", num = arguments ⌜⋆⌝ "1" in scratch (6) in :RETURN:: if ⌞¬⌟ num ⌜≈⌝ null scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = obj (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Repeat"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = num (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Take"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else `dummy`2 = undef merge scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (7) in :RETURN:: scratch_0 = toObj Functions scratch_1 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = obj (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Yield"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 scratch_4 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "Blank" (scratch_5).("1") = scratch_1 (scratch_5).("2") = scratch_4 ⌜⋆⌝ "Blank" (scratch_5).("length") = 3.0 scratch_6 = new IEnumerator(scratch_5) merge merge jmp :RETURN: scratch_6 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("Repeat") = scratch_1 scratch_0 = toObj Enumerable scratch_1 = newfun (2.0) (`self`14, arguments) => decl initializer = arguments ⌜⋆⌝ "0", finalizer = arguments ⌜⋆⌝ "1" in scratch (5) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = initializer (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge initializer = scratch_2 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = finalizer (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge finalizer = scratch_2 scratch_0 = newfun (0.0) (`self`14, arguments) => decl element = undef in scratch (11) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (2) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = initializer(`window`0, scratch_0) merge element = scratch_1 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = element (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Yield"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (2) in :RETURN:: if ⌞¬⌟ element ⌜≈⌝ null scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = element (scratch_0).("length") = 1.0 scratch_1 = finalizer(`window`0, scratch_0) merge element = null else `dummy`2 = undef merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("RepeatWithFinalize") = scratch_1 scratch_0 = toObj Enumerable scratch_1 = newfun (2.0) (`self`14, arguments) => decl func = arguments ⌜⋆⌝ "0", count = arguments ⌜⋆⌝ "1" in scratch (6) in :RETURN:: if ⌞¬⌟ count ⌜≈⌝ null scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = func (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Generate"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = count (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Take"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else `dummy`2 = undef merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = func (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge func = scratch_2 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (7) in :RETURN:: scratch_0 = toObj Functions scratch_1 = newfun (0.0) (`self`14, arguments) => scratch (5) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = func(`window`0, scratch_0) merge scratch_2 = toObj `self`14 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_1 (scratch_3).("length") = 1.0 scratch_4 = scratch_2 ⌜⋆⌝ "Yield"(scratch_2, scratch_3) merge jmp :RETURN: scratch_4 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 scratch_4 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "Blank" (scratch_5).("1") = scratch_1 (scratch_5).("2") = scratch_4 ⌜⋆⌝ "Blank" (scratch_5).("length") = 3.0 scratch_6 = new IEnumerator(scratch_5) merge merge jmp :RETURN: scratch_6 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("Generate") = scratch_1 scratch_0 = toObj Enumerable scratch_1 = newfun (2.0) (`self`14, arguments) => decl start = arguments ⌜⋆⌝ "0", step = arguments ⌜⋆⌝ "1" in scratch (5) in :RETURN:: if start ⌜≈⌝ null start = 0.0 else `dummy`2 = undef merge if step ⌜≈⌝ null step = 1.0 else `dummy`2 = undef merge scratch_0 = newfun (0.0) (`self`14, arguments) => decl value = undef in scratch (9) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (4) in :RETURN:: if isprim start scratch_0 = tonum start else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = start (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge if isprim step scratch_2 = tonum step else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = step (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge value = scratch_0 ⌜−⌝ scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (14) in :RETURN:: if isprim value scratch_0 = value else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = true (scratch_1).("length") = 1.0 scratch_0 = value ⌜⋆⌝ "valueOf"(value, scratch_1) merge merge if isprim step scratch_2 = step else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = true (scratch_3).("length") = 1.0 scratch_2 = step ⌜⋆⌝ "valueOf"(step, 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 value = scratch_10 scratch_11 = toObj `self`14 scratch_12 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_12).("0") = scratch_10 (scratch_12).("length") = 1.0 scratch_13 = scratch_11 ⌜⋆⌝ "Yield"(scratch_11, scratch_12) merge jmp :RETURN: scratch_13 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_0 (scratch_7).("1") = scratch_3 (scratch_7).("2") = scratch_6 ⌜⋆⌝ "Blank" (scratch_7).("length") = 3.0 scratch_8 = new IEnumerator(scratch_7) merge merge jmp :RETURN: scratch_8 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("ToInfinity") = scratch_1 scratch_0 = toObj Enumerable scratch_1 = newfun (2.0) (`self`14, arguments) => decl start = arguments ⌜⋆⌝ "0", step = arguments ⌜⋆⌝ "1" in scratch (5) in :RETURN:: if start ⌜≈⌝ null start = 0.0 else `dummy`2 = undef merge if step ⌜≈⌝ null step = 1.0 else `dummy`2 = undef merge scratch_0 = newfun (0.0) (`self`14, arguments) => decl value = undef in scratch (9) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (11) in :RETURN:: if isprim start scratch_0 = start else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = true (scratch_1).("length") = 1.0 scratch_0 = start ⌜⋆⌝ "valueOf"(start, scratch_1) merge merge if isprim step scratch_2 = step else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = true (scratch_3).("length") = 1.0 scratch_2 = step ⌜⋆⌝ "valueOf"(step, 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 value = scratch_10 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (7) in :RETURN:: if isprim value scratch_0 = tonum value else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = value (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge if isprim step scratch_2 = tonum step else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = step (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge value = scratch_0 ⌜−⌝ scratch_2 scratch_4 = toObj `self`14 scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜−⌝ scratch_2 (scratch_5).("length") = 1.0 scratch_6 = scratch_4 ⌜⋆⌝ "Yield"(scratch_4, scratch_5) merge jmp :RETURN: scratch_6 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_0 (scratch_7).("1") = scratch_3 (scratch_7).("2") = scratch_6 ⌜⋆⌝ "Blank" (scratch_7).("length") = 3.0 scratch_8 = new IEnumerator(scratch_7) merge merge jmp :RETURN: scratch_8 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("ToNegativeInfinity") = scratch_1 scratch_0 = toObj Enumerable scratch_1 = newfun (2.0) (`self`14, arguments) => decl seed = arguments ⌜⋆⌝ "0", func = arguments ⌜⋆⌝ "1" in scratch (5) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = func (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge func = scratch_2 scratch_0 = newfun (0.0) (`self`14, arguments) => decl value = undef, isFirst = undef in scratch (7) in :RETURN:: isFirst = true scratch_0 = toObj Functions scratch_1 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: if tobool isFirst isFirst = false value = seed scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = value (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Yield"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 else `dummy`2 = undef merge scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = value (scratch_0).("length") = 1.0 scratch_1 = func(`window`0, scratch_0) merge value = scratch_1 scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = value (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Yield"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 scratch_4 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "Blank" (scratch_5).("1") = scratch_1 (scratch_5).("2") = scratch_4 ⌜⋆⌝ "Blank" (scratch_5).("length") = 3.0 scratch_6 = new IEnumerator(scratch_5) merge merge jmp :RETURN: scratch_6 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("Unfold") = scratch_1 scratch_0 = toObj Enumerable scratch_1 = newfun (2.0) (`self`14, arguments) => decl func = arguments ⌜⋆⌝ "0", resultSelector = arguments ⌜⋆⌝ "1", source = undef in scratch (5) in :RETURN:: source = `self`14 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = func (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge func = scratch_2 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = resultSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge resultSelector = scratch_2 scratch_0 = newfun (0.0) (`self`14, arguments) => decl buffer = undef, nestLevel = undef, enumerator = undef in scratch (11) in :RETURN:: nestLevel = 0.0 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("length") = 0.0 buffer = scratch_1 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => decl next = undef in scratch (9) in :RETURN:: :BREAK:: scratch_0 = true while scratch_0 merge :CONTINUE:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = toObj buffer scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "push"(scratch_3, scratch_4) merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_2 (scratch_3).("1") = nestLevel (scratch_3).("length") = 2.0 scratch_4 = resultSelector(`window`0, scratch_3) merge scratch_5 = toObj `self`14 scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = scratch_4 (scratch_6).("length") = 1.0 scratch_7 = scratch_5 ⌜⋆⌝ "Yield"(scratch_5, scratch_6) merge jmp :RETURN: scratch_7 else `dummy`2 = undef merge scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = buffer (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "From"(scratch_0, scratch_1) merge scratch_3 = newfun (1.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0" in scratch (2) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = x (scratch_0).("length") = 1.0 scratch_1 = func(`window`0, scratch_0) merge jmp :RETURN: scratch_1 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj scratch_2 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_3 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "SelectMany"(scratch_6, scratch_7) merge next = scratch_8 scratch_0 = toObj next scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Any"(scratch_0, scratch_1) merge if ⌞¬⌟ tobool scratch_2 jmp :RETURN: false else if isprim nestLevel scratch_0 = tonum nestLevel else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = nestLevel (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge scratch_2 = scratch_0 nestLevel = scratch_2 ⌜+⌝ 1.0 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("length") = 0.0 buffer = scratch_1 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_0 = toObj next scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 merge merge scratch_0 = true merge merge scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 scratch_4 = newfun (2.0) (`self`14, arguments) => decl func = arguments ⌜⋆⌝ "0", resultSelector = arguments ⌜⋆⌝ "1", source = undef in scratch (5) in :RETURN:: source = `self`14 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = func (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge func = scratch_2 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = resultSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge resultSelector = scratch_2 scratch_0 = newfun (0.0) (`self`14, arguments) => decl enumerator = undef, enumeratorStack = undef in scratch (11) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("length") = 0.0 enumeratorStack = scratch_1 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => decl value = undef in scratch (11) in :RETURN:: :BREAK:: scratch_0 = true while scratch_0 merge :CONTINUE:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = toObj enumeratorStack scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("1") = scratch_3 ⌜⋆⌝ "length" (scratch_4).("length") = 2.0 scratch_5 = resultSelector(`window`0, scratch_4) merge value = scratch_5 scratch_0 = toObj enumeratorStack scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "push"(scratch_0, scratch_1) merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_2 (scratch_3).("length") = 1.0 scratch_4 = func(`window`0, scratch_3) merge scratch_5 = toObj Enumerable scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = scratch_4 (scratch_6).("length") = 1.0 scratch_7 = scratch_5 ⌜⋆⌝ "From"(scratch_5, scratch_6) merge scratch_8 = toObj scratch_7 scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("length") = 0.0 scratch_10 = scratch_8 ⌜⋆⌝ "GetEnumerator"(scratch_8, scratch_9) merge enumerator = scratch_10 scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = value (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Yield"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 else `dummy`2 = undef merge scratch_0 = toObj enumeratorStack if typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" ⌜&&⌝ false scratch_1 = scratch_0 ⌜⋆⌝ "length" ⌜≼⌝ 0.0 else if isprim scratch_0 ⌜⋆⌝ "length" scratch_2 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge scratch_1 = scratch_2 ⌜≤⌝ 0.0 merge if tobool scratch_1 jmp :RETURN: false else `dummy`2 = undef merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_0 = toObj enumeratorStack scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "pop"(scratch_0, scratch_1) merge enumerator = scratch_2 merge scratch_0 = true merge merge scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => decl `tempPVar`57 = undef in scratch (9) in :RETURN:: try scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge catch `tempPVar`57 merge throw `tempPVar`57 finally merge scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumeratorStack (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "From"(scratch_0, scratch_1) merge scratch_3 = newfun (1.0) (`self`14, arguments) => decl s = arguments ⌜⋆⌝ "0" in scratch (3) in :RETURN:: scratch_0 = toObj s scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj scratch_2 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_3 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "ForEach"(scratch_6, scratch_7) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("length") = 0.0 scratch_6 = new `objectVar`12(scratch_5) merge (scratch_4).("prototype") = scratch_6 scratch_7 = newfun (0.0) (`self`14, arguments) => decl source = undef in scratch (5) in :RETURN:: source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl middleEnumerator = undef, enumerator = undef in scratch (11) in :RETURN:: middleEnumerator = null scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (16) in :RETURN:: :BREAK:: scratch_0 = true while scratch_0 merge :CONTINUE:: if ⌞¬⌟ middleEnumerator ⌜≈⌝ null scratch_0 = toObj middleEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_0 = toObj middleEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Yield"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else middleEnumerator = null merge else `dummy`2 = undef merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge if ⌞¬⌟ typeof `window`0 ⌜⋆⌝ "Array" ⌜≡⌝ "function" throw "TypeError" else `dummy`2 = undef merge if scratch_2 instanceof `window`0 ⌜⋆⌝ "Array" ⌜⋆⌝ "prototype" scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = middleEnumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = toObj Enumerable scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "From"(scratch_3, scratch_4) merge scratch_6 = toObj Functions scratch_7 = toObj scratch_5 scratch_8 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_8).("0") = scratch_6 ⌜⋆⌝ "Identity" (scratch_8).("length") = 1.0 scratch_9 = scratch_7 ⌜⋆⌝ "SelectMany"(scratch_7, scratch_8) merge scratch_10 = toObj scratch_9 scratch_11 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_11).("length") = 0.0 scratch_12 = scratch_10 ⌜⋆⌝ "Flatten"(scratch_10, scratch_11) merge scratch_13 = toObj scratch_12 scratch_14 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_14).("length") = 0.0 scratch_15 = scratch_13 ⌜⋆⌝ "GetEnumerator"(scratch_13, scratch_14) merge middleEnumerator = scratch_15 jmp :CONTINUE: undef else scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Yield"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 merge else `dummy`2 = undef merge jmp :RETURN: false merge scratch_0 = true merge merge scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => decl `tempPVar`60 = undef in scratch (3) in :RETURN:: try scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge catch `tempPVar`60 merge throw `tempPVar`60 finally merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = middleEnumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_8 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_8).("length") = 0.0 scratch_9 = new `objectVar`12(scratch_8) merge (scratch_7).("prototype") = scratch_9 scratch_10 = newfun (1.0) (`self`14, arguments) => decl selector = arguments ⌜⋆⌝ "0", source = undef in scratch (5) in :RETURN:: source = `self`14 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = selector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge selector = scratch_2 scratch_0 = newfun (0.0) (`self`14, arguments) => decl enumerator = undef in scratch (11) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge 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 scratch_3 = newfun (0.0) (`self`14, arguments) => decl prev = undef in scratch (12) in :RETURN:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge prev = scratch_2 scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_3 = toObj enumerator scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "Current"(scratch_3, scratch_4) merge scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = prev (scratch_6).("1") = scratch_5 (scratch_6).("length") = 2.0 scratch_7 = selector(`window`0, scratch_6) merge scratch_8 = toObj `self`14 scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_7 (scratch_9).("length") = 1.0 scratch_10 = scratch_8 ⌜⋆⌝ "Yield"(scratch_8, scratch_9) merge scratch_11 = scratch_10 else scratch_11 = false merge jmp :RETURN: scratch_11 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_11 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_11).("length") = 0.0 scratch_12 = new `objectVar`12(scratch_11) merge (scratch_10).("prototype") = scratch_12 scratch_13 = newfun (3.0) (`self`14, arguments) => decl seed = arguments ⌜⋆⌝ "0", func = arguments ⌜⋆⌝ "1", resultSelector = arguments ⌜⋆⌝ "2", source = undef, isUseSeed = undef in scratch (6) in :RETURN:: if ⌞¬⌟ resultSelector ⌜≈⌝ null scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = seed (scratch_1).("1") = func (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "Scan"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = resultSelector (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Select"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else `dummy`2 = undef merge if func ⌜≈⌝ null scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = seed (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge func = scratch_2 isUseSeed = false else scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = func (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge func = scratch_2 isUseSeed = true merge source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl isFirst = undef, value = undef, enumerator = undef in scratch (11) in :RETURN:: isFirst = true scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (12) in :RETURN:: if tobool isFirst isFirst = false if ⌞¬⌟ tobool isUseSeed scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge value = scratch_2 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Yield"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else `dummy`2 = undef merge else value = seed scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = seed (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Yield"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 merge else `dummy`2 = undef merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_3 = toObj enumerator scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "Current"(scratch_3, scratch_4) merge scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = value (scratch_6).("1") = scratch_5 (scratch_6).("length") = 2.0 scratch_7 = func(`window`0, scratch_6) merge value = scratch_7 scratch_8 = toObj `self`14 scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_7 (scratch_9).("length") = 1.0 scratch_10 = scratch_8 ⌜⋆⌝ "Yield"(scratch_8, scratch_9) merge scratch_11 = scratch_10 else scratch_11 = false merge jmp :RETURN: scratch_11 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_14 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_14).("length") = 0.0 scratch_15 = new `objectVar`12(scratch_14) merge (scratch_13).("prototype") = scratch_15 scratch_16 = newfun (1.0) (`self`14, arguments) => decl selector = arguments ⌜⋆⌝ "0", source = undef in scratch (5) in :RETURN:: source = `self`14 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = selector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge selector = scratch_2 scratch_0 = newfun (0.0) (`self`14, arguments) => decl index = undef, enumerator = undef in scratch (11) in :RETURN:: index = 0.0 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (15) in :RETURN:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_3 = toObj enumerator scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "Current"(scratch_3, scratch_4) merge if isprim index scratch_6 = tonum index else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = index (scratch_7).("length") = 1.0 scratch_6 = `numberVar`8(`window`0, scratch_7) merge merge scratch_8 = scratch_6 index = scratch_8 ⌜+⌝ 1.0 scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_5 (scratch_9).("1") = scratch_8 (scratch_9).("length") = 2.0 scratch_10 = selector(`window`0, scratch_9) merge scratch_11 = toObj `self`14 scratch_12 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_12).("0") = scratch_10 (scratch_12).("length") = 1.0 scratch_13 = scratch_11 ⌜⋆⌝ "Yield"(scratch_11, scratch_12) merge scratch_14 = scratch_13 else scratch_14 = false merge jmp :RETURN: scratch_14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_17 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_17).("length") = 0.0 scratch_18 = new `objectVar`12(scratch_17) merge (scratch_16).("prototype") = scratch_18 scratch_19 = newfun (2.0) (`self`14, arguments) => decl collectionSelector = arguments ⌜⋆⌝ "0", resultSelector = arguments ⌜⋆⌝ "1", source = undef in scratch (5) in :RETURN:: source = `self`14 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = collectionSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge collectionSelector = scratch_2 if resultSelector ⌜≈⌝ null scratch_0 = newfun (2.0) (`self`14, arguments) => decl a = arguments ⌜⋆⌝ "0", b = arguments ⌜⋆⌝ "1" in :RETURN:: jmp :RETURN: b 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 resultSelector = scratch_0 else `dummy`2 = undef merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = resultSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge resultSelector = scratch_2 scratch_0 = newfun (0.0) (`self`14, arguments) => decl index = undef, middleEnumerator = undef, enumerator = undef in scratch (11) in :RETURN:: middleEnumerator = `window`0 ⌜⋆⌝ "undefined" index = 0.0 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => decl middleSeq = undef in scratch (11) in :RETURN:: if middleEnumerator ⌜≡⌝ `window`0 ⌜⋆⌝ "undefined" scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if ⌞¬⌟ tobool scratch_2 jmp :RETURN: false else `dummy`2 = undef merge else `dummy`2 = undef merge :BREAK:: scratch_0 = true while scratch_0 merge :CONTINUE:: if middleEnumerator ⌜≈⌝ null scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge if isprim index scratch_3 = tonum index else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = index (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge scratch_5 = scratch_3 index = scratch_5 ⌜+⌝ 1.0 scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = scratch_2 (scratch_6).("1") = scratch_5 (scratch_6).("length") = 2.0 scratch_7 = collectionSelector(`window`0, scratch_6) merge middleSeq = scratch_7 scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = middleSeq (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "From"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "GetEnumerator"(scratch_3, scratch_4) merge middleEnumerator = scratch_5 else `dummy`2 = undef merge scratch_0 = toObj middleEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = toObj middleEnumerator scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "Current"(scratch_3, scratch_4) merge scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = scratch_2 (scratch_6).("1") = scratch_5 (scratch_6).("length") = 2.0 scratch_7 = resultSelector(`window`0, scratch_6) merge scratch_8 = toObj `self`14 scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_7 (scratch_9).("length") = 1.0 scratch_10 = scratch_8 ⌜⋆⌝ "Yield"(scratch_8, scratch_9) merge jmp :RETURN: scratch_10 else `dummy`2 = undef merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = middleEnumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge middleEnumerator = null merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_0 = tobool scratch_2 merge merge jmp :RETURN: false scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => decl `tempPVar`68 = undef in scratch (3) in :RETURN:: try scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge catch `tempPVar`68 merge throw `tempPVar`68 finally merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = middleEnumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_20 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_20).("length") = 0.0 scratch_21 = new `objectVar`12(scratch_20) merge (scratch_19).("prototype") = scratch_21 scratch_22 = newfun (1.0) (`self`14, arguments) => decl predicate = arguments ⌜⋆⌝ "0", source = undef in scratch (5) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = predicate (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge predicate = scratch_2 source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl index = undef, enumerator = undef in scratch (11) in :RETURN:: index = 0.0 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (8) in :RETURN:: :BREAK:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 while scratch_3 merge :CONTINUE:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge if isprim index scratch_3 = tonum index else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = index (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge scratch_5 = scratch_3 index = scratch_5 ⌜+⌝ 1.0 scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = scratch_2 (scratch_6).("1") = scratch_5 (scratch_6).("length") = 2.0 scratch_7 = predicate(`window`0, scratch_6) merge if tobool scratch_7 scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Yield"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else `dummy`2 = undef merge merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 merge merge jmp :RETURN: false scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_23 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_23).("length") = 0.0 scratch_24 = new `objectVar`12(scratch_23) merge (scratch_22).("prototype") = scratch_24 scratch_25 = newfun (1.0) (`self`14, arguments) => decl type = arguments ⌜⋆⌝ "0", typeName = undef, `tempPVar`72 = undef, `tempPVar`73 = undef in scratch (13) in :RETURN:: :BREAK:: `tempPVar`72 = type `tempPVar`73 = false if `window`0 ⌜⋆⌝ "Number" ⌜≡⌝ `tempPVar`72 ⌜||⌝ `tempPVar`73 scratch_0 = toObj Types typeName = scratch_0 ⌜⋆⌝ "Number" jmp :BREAK: undef `tempPVar`73 = true else `dummy`2 = undef merge if `window`0 ⌜⋆⌝ "String" ⌜≡⌝ `tempPVar`72 ⌜||⌝ `tempPVar`73 scratch_0 = toObj Types typeName = scratch_0 ⌜⋆⌝ "String" jmp :BREAK: undef `tempPVar`73 = true else `dummy`2 = undef merge if `window`0 ⌜⋆⌝ "Boolean" ⌜≡⌝ `tempPVar`72 ⌜||⌝ `tempPVar`73 scratch_0 = toObj Types typeName = scratch_0 ⌜⋆⌝ "Boolean" jmp :BREAK: undef `tempPVar`73 = true else `dummy`2 = undef merge if `window`0 ⌜⋆⌝ "Function" ⌜≡⌝ `tempPVar`72 ⌜||⌝ `tempPVar`73 scratch_0 = toObj Types typeName = scratch_0 ⌜⋆⌝ "Function" jmp :BREAK: undef typeName = null jmp :BREAK: undef jmp :BREAK: undef `tempPVar`73 = true else `dummy`2 = undef merge typeName = null jmp :BREAK: undef merge if typeName ⌜≡⌝ null scratch_0 = newfun (1.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0" in :RETURN:: if ⌞¬⌟ typeof type ⌜≡⌝ "function" throw "TypeError" else `dummy`2 = undef merge jmp :RETURN: x instanceof type ⌜⋆⌝ "prototype" 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Where"(scratch_3, scratch_4) merge scratch_6 = scratch_5 else scratch_7 = newfun (1.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0" in :RETURN:: jmp :RETURN: typeof x ⌜≡⌝ typeName scratch_8 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_8).("length") = 0.0 scratch_9 = new `objectVar`12(scratch_8) merge (scratch_7).("prototype") = scratch_9 scratch_10 = toObj `self`14 scratch_11 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_11).("0") = scratch_7 (scratch_11).("length") = 1.0 scratch_12 = scratch_10 ⌜⋆⌝ "Where"(scratch_10, scratch_11) merge scratch_6 = scratch_12 merge jmp :RETURN: scratch_6 scratch_26 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_26).("length") = 0.0 scratch_27 = new `objectVar`12(scratch_26) merge (scratch_25).("prototype") = scratch_27 scratch_28 = newfun (2.0) (`self`14, arguments) => decl second = arguments ⌜⋆⌝ "0", selector = arguments ⌜⋆⌝ "1", source = undef in scratch (5) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = selector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge selector = scratch_2 source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl index = undef, secondEnumerator = undef, firstEnumerator = undef in scratch (11) in :RETURN:: index = 0.0 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (6) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge firstEnumerator = scratch_2 scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = second (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "From"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "GetEnumerator"(scratch_3, scratch_4) merge secondEnumerator = scratch_5 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (14) in :RETURN:: scratch_0 = toObj firstEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 ⌜≡⌝ true scratch_3 = toObj secondEnumerator scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "MoveNext"(scratch_3, scratch_4) merge scratch_6 = scratch_5 else scratch_6 = scratch_2 merge if tobool scratch_6 scratch_0 = toObj firstEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = toObj secondEnumerator scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "Current"(scratch_3, scratch_4) merge if isprim index scratch_6 = tonum index else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = index (scratch_7).("length") = 1.0 scratch_6 = `numberVar`8(`window`0, scratch_7) merge merge scratch_8 = scratch_6 index = scratch_8 ⌜+⌝ 1.0 scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_2 (scratch_9).("1") = scratch_5 (scratch_9).("2") = scratch_8 (scratch_9).("length") = 3.0 scratch_10 = selector(`window`0, scratch_9) merge scratch_11 = toObj `self`14 scratch_12 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_12).("0") = scratch_10 (scratch_12).("length") = 1.0 scratch_13 = scratch_11 ⌜⋆⌝ "Yield"(scratch_11, scratch_12) merge jmp :RETURN: scratch_13 else `dummy`2 = undef merge jmp :RETURN: false scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => decl `tempPVar`77 = undef in scratch (3) in :RETURN:: try scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = firstEnumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge catch `tempPVar`77 merge throw `tempPVar`77 finally merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = secondEnumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_29 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_29).("length") = 0.0 scratch_30 = new `objectVar`12(scratch_29) merge (scratch_28).("prototype") = scratch_30 scratch_31 = newfun (5.0) (`self`14, arguments) => decl inner = arguments ⌜⋆⌝ "0", outerKeySelector = arguments ⌜⋆⌝ "1", innerKeySelector = arguments ⌜⋆⌝ "2", resultSelector = arguments ⌜⋆⌝ "3", compareSelector = arguments ⌜⋆⌝ "4", source = undef in scratch (5) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = outerKeySelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge outerKeySelector = scratch_2 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = innerKeySelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge innerKeySelector = scratch_2 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = resultSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge resultSelector = scratch_2 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = compareSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge compareSelector = scratch_2 source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl innerCount = undef, innerElements = undef, lookup = undef, outerEnumerator = undef in scratch (11) in :RETURN:: innerElements = null innerCount = 0.0 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (7) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge outerEnumerator = scratch_2 scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = inner (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "From"(scratch_0, scratch_1) merge scratch_3 = toObj Functions scratch_4 = toObj scratch_2 scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = innerKeySelector (scratch_5).("1") = scratch_3 ⌜⋆⌝ "Identity" (scratch_5).("2") = compareSelector (scratch_5).("length") = 3.0 scratch_6 = scratch_4 ⌜⋆⌝ "ToLookup"(scratch_4, scratch_5) merge lookup = scratch_6 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 scratch_3 = newfun (0.0) (`self`14, arguments) => decl key = undef, innerElement = undef in scratch (8) in :RETURN:: :BREAK:: scratch_0 = true while scratch_0 merge :CONTINUE:: if ⌞¬⌟ innerElements ⌜≈⌝ null if isprim innerCount scratch_0 = tonum innerCount else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = innerCount (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge scratch_2 = scratch_0 innerCount = scratch_2 ⌜+⌝ 1.0 scratch_3 = toObj innerElements if isprim scratch_2 scratch_4 = tostr scratch_2 else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("length") = 0.0 scratch_4 = scratch_2 ⌜⋆⌝ "toString"(scratch_2, scratch_5) merge merge innerElement = scratch_3 ⌜⋆⌝ scratch_4 if ⌞¬⌟ innerElement ⌜≡⌝ `window`0 ⌜⋆⌝ "undefined" scratch_0 = toObj outerEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_2 (scratch_3).("1") = innerElement (scratch_3).("length") = 2.0 scratch_4 = resultSelector(`window`0, scratch_3) merge scratch_5 = toObj `self`14 scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = scratch_4 (scratch_6).("length") = 1.0 scratch_7 = scratch_5 ⌜⋆⌝ "Yield"(scratch_5, scratch_6) merge jmp :RETURN: scratch_7 else `dummy`2 = undef merge innerElement = null innerCount = 0.0 else `dummy`2 = undef merge scratch_0 = toObj outerEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_0 = toObj outerEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_2 (scratch_3).("length") = 1.0 scratch_4 = outerKeySelector(`window`0, scratch_3) merge key = scratch_4 scratch_0 = toObj lookup scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = key (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Get"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "ToArray"(scratch_3, scratch_4) merge innerElements = scratch_5 else jmp :RETURN: false merge merge scratch_0 = true merge merge scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = outerEnumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_32 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_32).("length") = 0.0 scratch_33 = new `objectVar`12(scratch_32) merge (scratch_31).("prototype") = scratch_33 scratch_34 = newfun (5.0) (`self`14, arguments) => decl inner = arguments ⌜⋆⌝ "0", outerKeySelector = arguments ⌜⋆⌝ "1", innerKeySelector = arguments ⌜⋆⌝ "2", resultSelector = arguments ⌜⋆⌝ "3", compareSelector = arguments ⌜⋆⌝ "4", source = undef in scratch (5) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = outerKeySelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge outerKeySelector = scratch_2 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = innerKeySelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge innerKeySelector = scratch_2 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = resultSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge resultSelector = scratch_2 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = compareSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge compareSelector = scratch_2 source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl lookup = undef, enumerator = undef in scratch (11) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 lookup = null scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (7) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = inner (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "From"(scratch_0, scratch_1) merge scratch_3 = toObj Functions scratch_4 = toObj scratch_2 scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = innerKeySelector (scratch_5).("1") = scratch_3 ⌜⋆⌝ "Identity" (scratch_5).("2") = compareSelector (scratch_5).("length") = 3.0 scratch_6 = scratch_4 ⌜⋆⌝ "ToLookup"(scratch_4, scratch_5) merge lookup = scratch_6 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 scratch_3 = newfun (0.0) (`self`14, arguments) => decl innerElement = undef in scratch (8) in :RETURN:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_2 (scratch_3).("length") = 1.0 scratch_4 = outerKeySelector(`window`0, scratch_3) merge scratch_5 = toObj lookup scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = scratch_4 (scratch_6).("length") = 1.0 scratch_7 = scratch_5 ⌜⋆⌝ "Get"(scratch_5, scratch_6) merge innerElement = scratch_7 scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_2 (scratch_3).("1") = innerElement (scratch_3).("length") = 2.0 scratch_4 = resultSelector(`window`0, scratch_3) merge scratch_5 = toObj `self`14 scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = scratch_4 (scratch_6).("length") = 1.0 scratch_7 = scratch_5 ⌜⋆⌝ "Yield"(scratch_5, scratch_6) merge jmp :RETURN: scratch_7 else `dummy`2 = undef merge jmp :RETURN: false scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_35 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_35).("length") = 0.0 scratch_36 = new `objectVar`12(scratch_35) merge (scratch_34).("prototype") = scratch_36 scratch_37 = newfun (1.0) (`self`14, arguments) => decl predicate = arguments ⌜⋆⌝ "0", result = undef in scratch (6) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = predicate (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge predicate = scratch_2 result = true scratch_0 = newfun (1.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0" in scratch (2) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = x (scratch_0).("length") = 1.0 scratch_1 = predicate(`window`0, scratch_0) merge if ⌞¬⌟ tobool scratch_1 result = false jmp :RETURN: false else `dummy`2 = undef merge 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "ForEach"(scratch_3, scratch_4) merge jmp :RETURN: result scratch_38 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_38).("length") = 0.0 scratch_39 = new `objectVar`12(scratch_38) merge (scratch_37).("prototype") = scratch_39 scratch_40 = newfun (1.0) (`self`14, arguments) => decl predicate = arguments ⌜⋆⌝ "0", enumerator = undef, `tempPVar`89 = undef in scratch (5) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = predicate (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge predicate = scratch_2 scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 try scratch_0 = toObj arguments if scratch_0 ⌜⋆⌝ "length" ⌜≈⌝ 0.0 scratch_1 = toObj enumerator scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = scratch_1 ⌜⋆⌝ "MoveNext"(scratch_1, scratch_2) merge jmp :RETURN: scratch_3 else `dummy`2 = undef merge :BREAK:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 while scratch_3 merge :CONTINUE:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_2 (scratch_3).("length") = 1.0 scratch_4 = predicate(`window`0, scratch_3) merge if tobool scratch_4 jmp :RETURN: true else `dummy`2 = undef merge merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 merge merge jmp :RETURN: false catch `tempPVar`89 merge throw `tempPVar`89 finally merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_41 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_41).("length") = 0.0 scratch_42 = new `objectVar`12(scratch_41) merge (scratch_40).("prototype") = scratch_42 scratch_43 = newfun (1.0) (`self`14, arguments) => decl second = arguments ⌜⋆⌝ "0", source = undef in scratch (5) in :RETURN:: source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl secondEnumerator = undef, firstEnumerator = undef in scratch (11) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge firstEnumerator = scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (9) in :RETURN:: if secondEnumerator ⌜≈⌝ null scratch_0 = toObj firstEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_3 = toObj firstEnumerator scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "Current"(scratch_3, scratch_4) merge scratch_6 = toObj `self`14 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_5 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "Yield"(scratch_6, scratch_7) merge jmp :RETURN: scratch_8 else `dummy`2 = undef merge scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = second (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "From"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "GetEnumerator"(scratch_3, scratch_4) merge secondEnumerator = scratch_5 else `dummy`2 = undef merge scratch_0 = toObj secondEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_3 = toObj secondEnumerator scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "Current"(scratch_3, scratch_4) merge scratch_6 = toObj `self`14 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_5 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "Yield"(scratch_6, scratch_7) merge jmp :RETURN: scratch_8 else `dummy`2 = undef merge jmp :RETURN: false scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => decl `tempPVar`90 = undef in scratch (3) in :RETURN:: try scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = firstEnumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge catch `tempPVar`90 merge throw `tempPVar`90 finally merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = secondEnumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_44 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_44).("length") = 0.0 scratch_45 = new `objectVar`12(scratch_44) merge (scratch_43).("prototype") = scratch_45 scratch_46 = newfun (2.0) (`self`14, arguments) => decl index = arguments ⌜⋆⌝ "0", second = arguments ⌜⋆⌝ "1", source = undef in scratch (5) in :RETURN:: source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl isEnumerated = undef, count = undef, secondEnumerator = undef, firstEnumerator = undef in scratch (11) in :RETURN:: count = 0.0 isEnumerated = false scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (6) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge firstEnumerator = scratch_2 scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = second (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "From"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "GetEnumerator"(scratch_3, scratch_4) merge secondEnumerator = scratch_5 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (6) in :RETURN:: if count ⌜≈⌝ index ⌜≡⌝ true scratch_0 = toObj secondEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = scratch_2 else scratch_3 = count ⌜≈⌝ index merge if tobool scratch_3 isEnumerated = true scratch_0 = toObj secondEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Yield"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else `dummy`2 = undef merge scratch_0 = toObj firstEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 if isprim count scratch_0 = tonum count else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = count (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge scratch_2 = scratch_0 count = scratch_2 ⌜+⌝ 1.0 scratch_0 = toObj firstEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Yield"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else `dummy`2 = undef merge if ⌞¬⌟ tobool isEnumerated ⌜≡⌝ true scratch_0 = toObj secondEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = scratch_2 else scratch_3 = ⌞¬⌟ tobool isEnumerated merge if tobool scratch_3 scratch_0 = toObj secondEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Yield"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else `dummy`2 = undef merge jmp :RETURN: false scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => decl `tempPVar`92 = undef in scratch (3) in :RETURN:: try scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = firstEnumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge catch `tempPVar`92 merge throw `tempPVar`92 finally merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = secondEnumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_47 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_47).("length") = 0.0 scratch_48 = new `objectVar`12(scratch_47) merge (scratch_46).("prototype") = scratch_48 scratch_49 = newfun (1.0) (`self`14, arguments) => decl value = arguments ⌜⋆⌝ "0" in scratch (9) in :RETURN:: scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = value (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Return"(scratch_0, scratch_1) merge value = scratch_2 scratch_0 = newfun (1.0) (`self`14, arguments) => decl elem = arguments ⌜⋆⌝ "0" in scratch (6) in :RETURN:: scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = elem (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Return"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = value (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Concat"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "SelectMany"(scratch_3, scratch_4) merge scratch_6 = toObj scratch_5 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = scratch_6 ⌜⋆⌝ "TakeExceptLast"(scratch_6, scratch_7) merge jmp :RETURN: scratch_8 scratch_50 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_50).("length") = 0.0 scratch_51 = new `objectVar`12(scratch_50) merge (scratch_49).("prototype") = scratch_51 scratch_52 = newfun (2.0) (`self`14, arguments) => decl value = arguments ⌜⋆⌝ "0", compareSelector = arguments ⌜⋆⌝ "1", enumerator = undef, `tempPVar`94 = undef in scratch (5) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = compareSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge compareSelector = scratch_2 scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 try :BREAK:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 while scratch_3 merge :CONTINUE:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_2 (scratch_3).("length") = 1.0 scratch_4 = compareSelector(`window`0, scratch_3) merge if scratch_4 ⌜≡⌝ value jmp :RETURN: true else `dummy`2 = undef merge merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 merge merge jmp :RETURN: false catch `tempPVar`94 merge throw `tempPVar`94 finally merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_53 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_53).("length") = 0.0 scratch_54 = new `objectVar`12(scratch_53) merge (scratch_52).("prototype") = scratch_54 scratch_55 = newfun (1.0) (`self`14, arguments) => decl defaultValue = arguments ⌜⋆⌝ "0", source = undef in scratch (5) in :RETURN:: source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl isFirst = undef, enumerator = undef in scratch (11) in :RETURN:: isFirst = true scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (6) in :RETURN:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 isFirst = false scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Yield"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else if tobool isFirst isFirst = false scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = defaultValue (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Yield"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 else `dummy`2 = undef merge merge jmp :RETURN: false scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_56 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_56).("length") = 0.0 scratch_57 = new `objectVar`12(scratch_56) merge (scratch_55).("prototype") = scratch_57 scratch_58 = newfun (1.0) (`self`14, arguments) => decl compareSelector = arguments ⌜⋆⌝ "0" in scratch (6) in :RETURN:: scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Empty"(scratch_0, scratch_1) merge scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("1") = compareSelector (scratch_4).("length") = 2.0 scratch_5 = scratch_3 ⌜⋆⌝ "Except"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 scratch_59 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_59).("length") = 0.0 scratch_60 = new `objectVar`12(scratch_59) merge (scratch_58).("prototype") = scratch_60 scratch_61 = newfun (2.0) (`self`14, arguments) => decl second = arguments ⌜⋆⌝ "0", compareSelector = arguments ⌜⋆⌝ "1", source = undef in scratch (5) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = compareSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge compareSelector = scratch_2 source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl keys = undef, enumerator = undef in scratch (11) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (9) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 if isprim Dictionary throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = compareSelector (scratch_0).("length") = 1.0 scratch_1 = new Dictionary(scratch_0) merge merge keys = scratch_1 scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = second (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "From"(scratch_0, scratch_1) merge scratch_3 = newfun (1.0) (`self`14, arguments) => decl key = arguments ⌜⋆⌝ "0" in scratch (3) in :RETURN:: scratch_0 = toObj keys scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = key (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Add"(scratch_0, scratch_1) merge scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj scratch_2 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_3 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "ForEach"(scratch_6, scratch_7) merge 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 scratch_3 = newfun (0.0) (`self`14, arguments) => decl current = undef in scratch (4) in :RETURN:: :BREAK:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 while scratch_3 merge :CONTINUE:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge current = scratch_2 scratch_0 = toObj keys scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = current (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Contains"(scratch_0, scratch_1) merge if ⌞¬⌟ tobool scratch_2 scratch_0 = toObj keys scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = current (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Add"(scratch_0, scratch_1) merge scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = current (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Yield"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 else `dummy`2 = undef merge merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 merge merge jmp :RETURN: false scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_62 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_62).("length") = 0.0 scratch_63 = new `objectVar`12(scratch_62) merge (scratch_61).("prototype") = scratch_63 scratch_64 = newfun (2.0) (`self`14, arguments) => decl second = arguments ⌜⋆⌝ "0", compareSelector = arguments ⌜⋆⌝ "1", source = undef in scratch (5) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = compareSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge compareSelector = scratch_2 source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl outs = undef, keys = undef, enumerator = undef in scratch (11) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (9) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 if isprim Dictionary throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = compareSelector (scratch_0).("length") = 1.0 scratch_1 = new Dictionary(scratch_0) merge merge keys = scratch_1 scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = second (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "From"(scratch_0, scratch_1) merge scratch_3 = newfun (1.0) (`self`14, arguments) => decl key = arguments ⌜⋆⌝ "0" in scratch (3) in :RETURN:: scratch_0 = toObj keys scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = key (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Add"(scratch_0, scratch_1) merge scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj scratch_2 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_3 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "ForEach"(scratch_6, scratch_7) merge if isprim Dictionary throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = compareSelector (scratch_0).("length") = 1.0 scratch_1 = new Dictionary(scratch_0) merge merge outs = scratch_1 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 scratch_3 = newfun (0.0) (`self`14, arguments) => decl current = undef in scratch (7) in :RETURN:: :BREAK:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 while scratch_3 merge :CONTINUE:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge current = scratch_2 scratch_0 = toObj outs scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = current (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Contains"(scratch_0, scratch_1) merge if ⌞¬⌟ tobool scratch_2 ⌜≡⌝ true scratch_3 = toObj keys scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = current (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Contains"(scratch_3, scratch_4) merge scratch_6 = scratch_5 else scratch_6 = ⌞¬⌟ tobool scratch_2 merge if tobool scratch_6 scratch_0 = toObj outs scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = current (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Add"(scratch_0, scratch_1) merge scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = current (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Yield"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 else `dummy`2 = undef merge merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 merge merge jmp :RETURN: false scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_65 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_65).("length") = 0.0 scratch_66 = new `objectVar`12(scratch_65) merge (scratch_64).("prototype") = scratch_66 scratch_67 = newfun (2.0) (`self`14, arguments) => decl second = arguments ⌜⋆⌝ "0", compareSelector = arguments ⌜⋆⌝ "1", secondEnumerator = undef, firstEnumerator = undef, `tempPVar`100 = undef, `tempPVar`101 = undef in scratch (14) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = compareSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge compareSelector = scratch_2 scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge firstEnumerator = scratch_2 try scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = second (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "From"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "GetEnumerator"(scratch_3, scratch_4) merge secondEnumerator = scratch_5 try :BREAK:: scratch_0 = toObj firstEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 while scratch_3 merge :CONTINUE:: scratch_0 = toObj secondEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if ⌞¬⌟ tobool scratch_2 ⌜≡⌝ false scratch_3 = toObj firstEnumerator scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "Current"(scratch_3, scratch_4) merge scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = scratch_5 (scratch_6).("length") = 1.0 scratch_7 = compareSelector(`window`0, scratch_6) merge scratch_8 = toObj secondEnumerator scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("length") = 0.0 scratch_10 = scratch_8 ⌜⋆⌝ "Current"(scratch_8, scratch_9) merge scratch_11 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_11).("0") = scratch_10 (scratch_11).("length") = 1.0 scratch_12 = compareSelector(`window`0, scratch_11) merge scratch_13 = ⌞¬⌟ scratch_7 ⌜≡⌝ scratch_12 else scratch_13 = ⌞¬⌟ tobool scratch_2 merge if tobool scratch_13 jmp :RETURN: false else `dummy`2 = undef merge merge scratch_0 = toObj firstEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 merge merge scratch_0 = toObj secondEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 jmp :RETURN: false else `dummy`2 = undef merge jmp :RETURN: true catch `tempPVar`100 merge throw `tempPVar`100 finally merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = secondEnumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge catch `tempPVar`101 merge throw `tempPVar`101 finally merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = firstEnumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_68 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_68).("length") = 0.0 scratch_69 = new `objectVar`12(scratch_68) merge (scratch_67).("prototype") = scratch_69 scratch_70 = newfun (2.0) (`self`14, arguments) => decl second = arguments ⌜⋆⌝ "0", compareSelector = arguments ⌜⋆⌝ "1", source = undef in scratch (5) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = compareSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge compareSelector = scratch_2 source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl keys = undef, secondEnumerator = undef, firstEnumerator = undef in scratch (11) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge firstEnumerator = scratch_2 if isprim Dictionary throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = compareSelector (scratch_0).("length") = 1.0 scratch_1 = new Dictionary(scratch_0) merge merge keys = scratch_1 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 scratch_3 = newfun (0.0) (`self`14, arguments) => decl current = undef in scratch (6) in :RETURN:: if secondEnumerator ⌜≡⌝ `window`0 ⌜⋆⌝ "undefined" :BREAK:: scratch_0 = toObj firstEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 while scratch_3 merge :CONTINUE:: scratch_0 = toObj firstEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge current = scratch_2 scratch_0 = toObj keys scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = current (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Contains"(scratch_0, scratch_1) merge if ⌞¬⌟ tobool scratch_2 scratch_0 = toObj keys scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = current (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Add"(scratch_0, scratch_1) merge scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = current (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Yield"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 else `dummy`2 = undef merge merge scratch_0 = toObj firstEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 merge merge scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = second (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "From"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "GetEnumerator"(scratch_3, scratch_4) merge secondEnumerator = scratch_5 else `dummy`2 = undef merge :BREAK:: scratch_0 = toObj secondEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 while scratch_3 merge :CONTINUE:: scratch_0 = toObj secondEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge current = scratch_2 scratch_0 = toObj keys scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = current (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Contains"(scratch_0, scratch_1) merge if ⌞¬⌟ tobool scratch_2 scratch_0 = toObj keys scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = current (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Add"(scratch_0, scratch_1) merge scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = current (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Yield"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 else `dummy`2 = undef merge merge scratch_0 = toObj secondEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 merge merge jmp :RETURN: false scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => decl `tempPVar`102 = undef in scratch (3) in :RETURN:: try scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = firstEnumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge catch `tempPVar`102 merge throw `tempPVar`102 finally merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = secondEnumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_71 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_71).("length") = 0.0 scratch_72 = new `objectVar`12(scratch_71) merge (scratch_70).("prototype") = scratch_72 scratch_73 = newfun (1.0) (`self`14, arguments) => decl keySelector = arguments ⌜⋆⌝ "0" in scratch (2) in :RETURN:: if isprim OrderedEnumerable throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = `self`14 (scratch_0).("1") = keySelector (scratch_0).("2") = false (scratch_0).("length") = 3.0 scratch_1 = new OrderedEnumerable(scratch_0) merge merge jmp :RETURN: scratch_1 scratch_74 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_74).("length") = 0.0 scratch_75 = new `objectVar`12(scratch_74) merge (scratch_73).("prototype") = scratch_75 scratch_76 = newfun (1.0) (`self`14, arguments) => decl keySelector = arguments ⌜⋆⌝ "0" in scratch (2) in :RETURN:: if isprim OrderedEnumerable throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = `self`14 (scratch_0).("1") = keySelector (scratch_0).("2") = true (scratch_0).("length") = 3.0 scratch_1 = new OrderedEnumerable(scratch_0) merge merge jmp :RETURN: scratch_1 scratch_77 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_77).("length") = 0.0 scratch_78 = new `objectVar`12(scratch_77) merge (scratch_76).("prototype") = scratch_78 scratch_79 = newfun (0.0) (`self`14, arguments) => decl source = undef in scratch (5) in :RETURN:: source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl index = undef, buffer = undef in scratch (9) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "ToArray"(scratch_0, scratch_1) merge buffer = scratch_2 scratch_0 = toObj buffer index = scratch_0 ⌜⋆⌝ "length" 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (12) in :RETURN:: if false ⌜&&⌝ typeof index ⌜≡⌝ "string" scratch_0 = 0.0 ⌜≺⌝ index else if isprim index scratch_1 = tonum index else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = index (scratch_2).("length") = 1.0 scratch_1 = `numberVar`8(`window`0, scratch_2) merge merge scratch_0 = 0.0 ⌜<⌝ scratch_1 merge if tobool scratch_0 if isprim index scratch_3 = tonum index else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = index (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge index = scratch_3 ⌜+⌝ -1.0 scratch_5 = toObj buffer if isprim index scratch_6 = tostr index else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_6 = index ⌜⋆⌝ "toString"(index, scratch_7) merge merge scratch_8 = toObj `self`14 scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_5 ⌜⋆⌝ scratch_6 (scratch_9).("length") = 1.0 scratch_10 = scratch_8 ⌜⋆⌝ "Yield"(scratch_8, scratch_9) merge scratch_11 = scratch_10 else scratch_11 = false merge jmp :RETURN: scratch_11 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_0 (scratch_7).("1") = scratch_3 (scratch_7).("2") = scratch_6 ⌜⋆⌝ "Blank" (scratch_7).("length") = 3.0 scratch_8 = new IEnumerator(scratch_7) merge merge jmp :RETURN: scratch_8 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_80 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_80).("length") = 0.0 scratch_81 = new `objectVar`12(scratch_80) merge (scratch_79).("prototype") = scratch_81 scratch_82 = newfun (0.0) (`self`14, arguments) => decl source = undef in scratch (5) in :RETURN:: source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl buffer = undef in scratch (9) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "ToArray"(scratch_0, scratch_1) merge buffer = scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => decl i = undef in scratch (11) in :RETURN:: scratch_0 = toObj buffer if false ⌜&&⌝ typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_1 = 0.0 ⌜≺⌝ scratch_0 ⌜⋆⌝ "length" else if isprim scratch_0 ⌜⋆⌝ "length" scratch_2 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge scratch_1 = 0.0 ⌜<⌝ scratch_2 merge if tobool scratch_1 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 scratch_3 = toObj buffer if isprim scratch_2 scratch_4 = tonum scratch_2 else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_2 (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge if isprim scratch_3 ⌜⋆⌝ "length" scratch_6 = tonum scratch_3 ⌜⋆⌝ "length" else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_3 ⌜⋆⌝ "length" (scratch_7).("length") = 1.0 scratch_6 = `numberVar`8(`window`0, scratch_7) merge merge scratch_8 = toObj `window`0 ⌜⋆⌝ "Math" scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_4 ⌜×⌝ scratch_6 (scratch_9).("length") = 1.0 scratch_10 = scratch_8 ⌜⋆⌝ "floor"(scratch_8, scratch_9) merge i = scratch_10 scratch_0 = toObj buffer scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = i (scratch_1).("1") = 1.0 (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "splice"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = toObj `self`14 scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_3 ⌜⋆⌝ tostr 0.0 (scratch_5).("length") = 1.0 scratch_6 = scratch_4 ⌜⋆⌝ "Yield"(scratch_4, scratch_5) merge jmp :RETURN: scratch_6 else `dummy`2 = undef merge jmp :RETURN: false scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_0 (scratch_7).("1") = scratch_3 (scratch_7).("2") = scratch_6 ⌜⋆⌝ "Blank" (scratch_7).("length") = 3.0 scratch_8 = new IEnumerator(scratch_7) merge merge jmp :RETURN: scratch_8 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_83 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_83).("length") = 0.0 scratch_84 = new `objectVar`12(scratch_83) merge (scratch_82).("prototype") = scratch_84 scratch_85 = newfun (4.0) (`self`14, arguments) => decl keySelector = arguments ⌜⋆⌝ "0", elementSelector = arguments ⌜⋆⌝ "1", resultSelector = arguments ⌜⋆⌝ "2", compareSelector = arguments ⌜⋆⌝ "3", source = undef in scratch (5) in :RETURN:: source = `self`14 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = keySelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge keySelector = scratch_2 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = elementSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge elementSelector = scratch_2 if ⌞¬⌟ resultSelector ⌜≈⌝ null scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = resultSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge resultSelector = scratch_2 else `dummy`2 = undef merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = compareSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge compareSelector = scratch_2 scratch_0 = newfun (0.0) (`self`14, arguments) => decl enumerator = undef in scratch (11) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (9) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = keySelector (scratch_1).("1") = elementSelector (scratch_1).("2") = compareSelector (scratch_1).("length") = 3.0 scratch_2 = scratch_0 ⌜⋆⌝ "ToLookup"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "ToEnumerable"(scratch_3, scratch_4) merge scratch_6 = toObj scratch_5 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = scratch_6 ⌜⋆⌝ "GetEnumerator"(scratch_6, scratch_7) merge enumerator = scratch_8 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (21) in :RETURN:: :BREAK:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 while scratch_3 merge :CONTINUE:: if resultSelector ⌜≈⌝ null scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Yield"(scratch_3, scratch_4) merge scratch_6 = scratch_5 else scratch_7 = toObj enumerator scratch_8 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_8).("length") = 0.0 scratch_9 = scratch_7 ⌜⋆⌝ "Current"(scratch_7, scratch_8) merge scratch_10 = toObj scratch_9 scratch_11 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_11).("length") = 0.0 scratch_12 = scratch_10 ⌜⋆⌝ "Key"(scratch_10, scratch_11) merge scratch_13 = toObj enumerator scratch_14 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_14).("length") = 0.0 scratch_15 = scratch_13 ⌜⋆⌝ "Current"(scratch_13, scratch_14) merge scratch_16 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_16).("0") = scratch_12 (scratch_16).("1") = scratch_15 (scratch_16).("length") = 2.0 scratch_17 = resultSelector(`window`0, scratch_16) merge scratch_18 = toObj `self`14 scratch_19 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_19).("0") = scratch_17 (scratch_19).("length") = 1.0 scratch_20 = scratch_18 ⌜⋆⌝ "Yield"(scratch_18, scratch_19) merge scratch_6 = scratch_20 merge jmp :RETURN: scratch_6 merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 merge merge jmp :RETURN: false scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_86 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_86).("length") = 0.0 scratch_87 = new `objectVar`12(scratch_86) merge (scratch_85).("prototype") = scratch_87 scratch_88 = newfun (4.0) (`self`14, arguments) => decl keySelector = arguments ⌜⋆⌝ "0", elementSelector = arguments ⌜⋆⌝ "1", resultSelector = arguments ⌜⋆⌝ "2", compareSelector = arguments ⌜⋆⌝ "3", hasResultSelector = undef, source = undef in scratch (5) in :RETURN:: source = `self`14 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = keySelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge keySelector = scratch_2 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = elementSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge elementSelector = scratch_2 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = compareSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge compareSelector = scratch_2 if resultSelector ⌜≈⌝ null hasResultSelector = false scratch_0 = newfun (2.0) (`self`14, arguments) => decl key = arguments ⌜⋆⌝ "0", group = arguments ⌜⋆⌝ "1" in scratch (2) in :RETURN:: if isprim Grouping throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = key (scratch_0).("1") = group (scratch_0).("length") = 2.0 scratch_1 = new Grouping(scratch_0) merge merge jmp :RETURN: scratch_1 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 resultSelector = scratch_0 else hasResultSelector = true scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = resultSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge resultSelector = scratch_2 merge scratch_0 = newfun (0.0) (`self`14, arguments) => decl group = undef, compareKey = undef, key = undef, enumerator = undef in scratch (11) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("length") = 0.0 group = scratch_1 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (8) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_2 (scratch_3).("length") = 1.0 scratch_4 = keySelector(`window`0, scratch_3) merge key = scratch_4 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = key (scratch_0).("length") = 1.0 scratch_1 = compareSelector(`window`0, scratch_0) merge compareKey = scratch_1 scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_2 (scratch_3).("length") = 1.0 scratch_4 = elementSelector(`window`0, scratch_3) merge scratch_5 = toObj group scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = scratch_4 (scratch_6).("length") = 1.0 scratch_7 = scratch_5 ⌜⋆⌝ "push"(scratch_5, scratch_6) merge else `dummy`2 = undef merge 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 scratch_3 = newfun (0.0) (`self`14, arguments) => decl result = undef, hasNext = undef in scratch (8) in :RETURN:: :BREAK:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge hasNext = scratch_2 scratch_3 = scratch_2 ⌜≈⌝ true while scratch_3 merge :CONTINUE:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_2 (scratch_3).("length") = 1.0 scratch_4 = keySelector(`window`0, scratch_3) merge scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_4 (scratch_5).("length") = 1.0 scratch_6 = compareSelector(`window`0, scratch_5) merge if compareKey ⌜≡⌝ scratch_6 scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_2 (scratch_3).("length") = 1.0 scratch_4 = elementSelector(`window`0, scratch_3) merge scratch_5 = toObj group scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = scratch_4 (scratch_6).("length") = 1.0 scratch_7 = scratch_5 ⌜⋆⌝ "push"(scratch_5, scratch_6) merge else jmp :BREAK: undef merge merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge hasNext = scratch_2 scratch_3 = scratch_2 ⌜≈⌝ true merge merge scratch_0 = toObj group if false ⌜&&⌝ typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_1 = 0.0 ⌜≺⌝ scratch_0 ⌜⋆⌝ "length" else if isprim scratch_0 ⌜⋆⌝ "length" scratch_2 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge scratch_1 = 0.0 ⌜<⌝ scratch_2 merge if tobool scratch_1 if tobool hasResultSelector scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = group (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "From"(scratch_0, scratch_1) merge scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = key (scratch_3).("1") = scratch_2 (scratch_3).("length") = 2.0 scratch_4 = resultSelector(`window`0, scratch_3) merge scratch_5 = scratch_4 else scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = key (scratch_6).("1") = group (scratch_6).("length") = 2.0 scratch_7 = resultSelector(`window`0, scratch_6) merge scratch_5 = scratch_7 merge result = scratch_5 if tobool hasNext scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_2 (scratch_3).("length") = 1.0 scratch_4 = keySelector(`window`0, scratch_3) merge key = scratch_4 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = key (scratch_0).("length") = 1.0 scratch_1 = compareSelector(`window`0, scratch_0) merge compareKey = scratch_1 scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_2 (scratch_3).("length") = 1.0 scratch_4 = elementSelector(`window`0, scratch_3) merge scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("length") = 0.0 scratch_6 = new `arrayVar`3(scratch_5) merge (scratch_6).("0") = scratch_4 (scratch_6).("length") = 1.0 group = scratch_6 else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("length") = 0.0 group = scratch_1 merge scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = result (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Yield"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 else `dummy`2 = undef merge jmp :RETURN: false scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_89 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_89).("length") = 0.0 scratch_90 = new `objectVar`12(scratch_89) merge (scratch_88).("prototype") = scratch_90 scratch_91 = newfun (1.0) (`self`14, arguments) => decl count = arguments ⌜⋆⌝ "0", source = undef in scratch (5) in :RETURN:: source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl enumerator = undef in scratch (11) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => decl index = undef, array = undef in scratch (10) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("length") = 0.0 array = scratch_1 index = 0.0 :BREAK:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 while scratch_3 merge :CONTINUE:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = toObj array scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "push"(scratch_3, scratch_4) merge if isprim index scratch_0 = tonum index else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = index (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge index = scratch_0 ⌜+⌝ 1.0 if typeof count ⌜≡⌝ "string" ⌜&&⌝ typeof index ⌜≡⌝ "string" scratch_2 = count ⌜≼⌝ index else if isprim count scratch_3 = tonum count else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = count (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge if isprim index scratch_5 = tonum index else scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = index (scratch_6).("length") = 1.0 scratch_5 = `numberVar`8(`window`0, scratch_6) merge merge scratch_2 = scratch_3 ⌜≤⌝ scratch_5 merge if tobool scratch_2 scratch_7 = toObj `self`14 scratch_8 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_8).("0") = array (scratch_8).("length") = 1.0 scratch_9 = scratch_7 ⌜⋆⌝ "Yield"(scratch_7, scratch_8) merge jmp :RETURN: scratch_9 else `dummy`2 = undef merge merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 merge merge scratch_0 = toObj array if false ⌜&&⌝ typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_1 = 0.0 ⌜≺⌝ scratch_0 ⌜⋆⌝ "length" else if isprim scratch_0 ⌜⋆⌝ "length" scratch_2 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge scratch_1 = 0.0 ⌜<⌝ scratch_2 merge if tobool scratch_1 scratch_4 = toObj `self`14 scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = array (scratch_5).("length") = 1.0 scratch_6 = scratch_4 ⌜⋆⌝ "Yield"(scratch_4, scratch_5) merge jmp :RETURN: scratch_6 else `dummy`2 = undef merge jmp :RETURN: false scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_92 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_92).("length") = 0.0 scratch_93 = new `objectVar`12(scratch_92) merge (scratch_91).("prototype") = scratch_93 scratch_94 = newfun (3.0) (`self`14, arguments) => decl seed = arguments ⌜⋆⌝ "0", func = arguments ⌜⋆⌝ "1", resultSelector = arguments ⌜⋆⌝ "2" in scratch (6) in :RETURN:: scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = seed (scratch_1).("1") = func (scratch_1).("2") = resultSelector (scratch_1).("length") = 3.0 scratch_2 = scratch_0 ⌜⋆⌝ "Scan"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "Last"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 scratch_95 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_95).("length") = 0.0 scratch_96 = new `objectVar`12(scratch_95) merge (scratch_94).("prototype") = scratch_96 scratch_97 = newfun (1.0) (`self`14, arguments) => decl selector = arguments ⌜⋆⌝ "0", count = undef, sum = undef in scratch (6) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = selector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge selector = scratch_2 sum = 0.0 count = 0.0 scratch_0 = newfun (1.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0" in scratch (13) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = x (scratch_0).("length") = 1.0 scratch_1 = selector(`window`0, scratch_0) merge if isprim sum scratch_2 = sum else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = true (scratch_3).("length") = 1.0 scratch_2 = sum ⌜⋆⌝ "valueOf"(sum, scratch_3) merge merge if isprim scratch_1 scratch_4 = scratch_1 else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = true (scratch_5).("length") = 1.0 scratch_4 = scratch_1 ⌜⋆⌝ "valueOf"(scratch_1, 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 scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("length") = 0.0 scratch_8 = scratch_4 ⌜⋆⌝ "toString"(scratch_4, scratch_9) merge merge if isprim scratch_6 scratch_10 = scratch_6 else throw "TypeError" merge if isprim scratch_8 scratch_11 = scratch_8 else throw "TypeError" merge if typeof scratch_10 ⌜≡⌝ "string" scratch_12 = scratch_10 ⌜++⌝ tostr scratch_11 else if typeof scratch_11 ⌜≡⌝ "string" scratch_12 = tostr scratch_10 ⌜++⌝ scratch_11 else scratch_12 = tonum scratch_10 ⌜+⌝ tonum scratch_11 merge merge sum = scratch_12 if isprim count scratch_0 = tonum count else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = count (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge count = scratch_0 ⌜+⌝ 1.0 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "ForEach"(scratch_3, scratch_4) merge if isprim sum scratch_0 = tonum sum else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = sum (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge if isprim count scratch_2 = tonum count else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = count (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge jmp :RETURN: scratch_0 ⌜÷⌝ scratch_2 scratch_98 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_98).("length") = 0.0 scratch_99 = new `objectVar`12(scratch_98) merge (scratch_97).("prototype") = scratch_99 scratch_100 = newfun (1.0) (`self`14, arguments) => decl predicate = arguments ⌜⋆⌝ "0", count = undef in scratch (6) in :RETURN:: if predicate ⌜≈⌝ null scratch_0 = toObj Functions scratch_1 = scratch_0 ⌜⋆⌝ "True" else scratch_2 = toObj Utils scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = predicate (scratch_3).("length") = 1.0 scratch_4 = scratch_2 ⌜⋆⌝ "CreateLambda"(scratch_2, scratch_3) merge scratch_1 = scratch_4 merge predicate = scratch_1 count = 0.0 scratch_0 = newfun (2.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0", i = arguments ⌜⋆⌝ "1" in scratch (4) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = x (scratch_0).("1") = i (scratch_0).("length") = 2.0 scratch_1 = predicate(`window`0, scratch_0) merge if tobool scratch_1 if isprim count scratch_2 = tonum count else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = count (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge count = scratch_2 ⌜+⌝ 1.0 else `dummy`2 = undef merge 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "ForEach"(scratch_3, scratch_4) merge jmp :RETURN: count scratch_101 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_101).("length") = 0.0 scratch_102 = new `objectVar`12(scratch_101) merge (scratch_100).("prototype") = scratch_102 scratch_103 = newfun (1.0) (`self`14, arguments) => decl selector = arguments ⌜⋆⌝ "0" in scratch (9) in :RETURN:: if selector ⌜≈⌝ null scratch_0 = toObj Functions selector = scratch_0 ⌜⋆⌝ "Identity" else `dummy`2 = undef merge scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = selector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Select"(scratch_0, scratch_1) merge scratch_3 = newfun (2.0) (`self`14, arguments) => decl a = arguments ⌜⋆⌝ "0", b = arguments ⌜⋆⌝ "1" in scratch (6) in :RETURN:: if typeof b ⌜≡⌝ "string" ⌜&&⌝ typeof a ⌜≡⌝ "string" scratch_0 = b ⌜≺⌝ a else if isprim b scratch_1 = tonum b else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = b (scratch_2).("length") = 1.0 scratch_1 = `numberVar`8(`window`0, scratch_2) merge merge if isprim a scratch_3 = tonum a else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = a (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge scratch_0 = scratch_1 ⌜<⌝ scratch_3 merge if tobool scratch_0 scratch_5 = a else scratch_5 = b merge jmp :RETURN: scratch_5 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj scratch_2 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_3 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "Aggregate"(scratch_6, scratch_7) merge jmp :RETURN: scratch_8 scratch_104 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_104).("length") = 0.0 scratch_105 = new `objectVar`12(scratch_104) merge (scratch_103).("prototype") = scratch_105 scratch_106 = newfun (1.0) (`self`14, arguments) => decl selector = arguments ⌜⋆⌝ "0" in scratch (9) in :RETURN:: if selector ⌜≈⌝ null scratch_0 = toObj Functions selector = scratch_0 ⌜⋆⌝ "Identity" else `dummy`2 = undef merge scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = selector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Select"(scratch_0, scratch_1) merge scratch_3 = newfun (2.0) (`self`14, arguments) => decl a = arguments ⌜⋆⌝ "0", b = arguments ⌜⋆⌝ "1" in scratch (6) in :RETURN:: if typeof a ⌜≡⌝ "string" ⌜&&⌝ typeof b ⌜≡⌝ "string" scratch_0 = a ⌜≺⌝ b else if isprim a scratch_1 = tonum a else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = a (scratch_2).("length") = 1.0 scratch_1 = `numberVar`8(`window`0, scratch_2) merge merge if isprim b scratch_3 = tonum b else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = b (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge scratch_0 = scratch_1 ⌜<⌝ scratch_3 merge if tobool scratch_0 scratch_5 = a else scratch_5 = b merge jmp :RETURN: scratch_5 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj scratch_2 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_3 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "Aggregate"(scratch_6, scratch_7) merge jmp :RETURN: scratch_8 scratch_107 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_107).("length") = 0.0 scratch_108 = new `objectVar`12(scratch_107) merge (scratch_106).("prototype") = scratch_108 scratch_109 = newfun (1.0) (`self`14, arguments) => decl keySelector = arguments ⌜⋆⌝ "0" in scratch (6) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = keySelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge keySelector = scratch_2 scratch_0 = newfun (2.0) (`self`14, arguments) => decl a = arguments ⌜⋆⌝ "0", b = arguments ⌜⋆⌝ "1" in scratch (10) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = a (scratch_0).("length") = 1.0 scratch_1 = keySelector(`window`0, scratch_0) merge scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = b (scratch_2).("length") = 1.0 scratch_3 = keySelector(`window`0, scratch_2) merge if typeof scratch_3 ⌜≡⌝ "string" ⌜&&⌝ typeof scratch_1 ⌜≡⌝ "string" scratch_4 = scratch_3 ⌜≺⌝ scratch_1 else if isprim scratch_3 scratch_5 = tonum scratch_3 else scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = scratch_3 (scratch_6).("length") = 1.0 scratch_5 = `numberVar`8(`window`0, scratch_6) merge merge if isprim scratch_1 scratch_7 = tonum scratch_1 else scratch_8 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_8).("0") = scratch_1 (scratch_8).("length") = 1.0 scratch_7 = `numberVar`8(`window`0, scratch_8) merge merge scratch_4 = scratch_5 ⌜<⌝ scratch_7 merge if tobool scratch_4 scratch_9 = a else scratch_9 = b merge jmp :RETURN: scratch_9 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Aggregate"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 scratch_110 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_110).("length") = 0.0 scratch_111 = new `objectVar`12(scratch_110) merge (scratch_109).("prototype") = scratch_111 scratch_112 = newfun (1.0) (`self`14, arguments) => decl keySelector = arguments ⌜⋆⌝ "0" in scratch (6) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = keySelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge keySelector = scratch_2 scratch_0 = newfun (2.0) (`self`14, arguments) => decl a = arguments ⌜⋆⌝ "0", b = arguments ⌜⋆⌝ "1" in scratch (10) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = a (scratch_0).("length") = 1.0 scratch_1 = keySelector(`window`0, scratch_0) merge scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = b (scratch_2).("length") = 1.0 scratch_3 = keySelector(`window`0, scratch_2) merge if typeof scratch_1 ⌜≡⌝ "string" ⌜&&⌝ typeof scratch_3 ⌜≡⌝ "string" scratch_4 = scratch_1 ⌜≺⌝ scratch_3 else if isprim scratch_1 scratch_5 = tonum scratch_1 else scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = scratch_1 (scratch_6).("length") = 1.0 scratch_5 = `numberVar`8(`window`0, scratch_6) merge merge if isprim scratch_3 scratch_7 = tonum scratch_3 else scratch_8 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_8).("0") = scratch_3 (scratch_8).("length") = 1.0 scratch_7 = `numberVar`8(`window`0, scratch_8) merge merge scratch_4 = scratch_5 ⌜<⌝ scratch_7 merge if tobool scratch_4 scratch_9 = a else scratch_9 = b merge jmp :RETURN: scratch_9 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Aggregate"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 scratch_113 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_113).("length") = 0.0 scratch_114 = new `objectVar`12(scratch_113) merge (scratch_112).("prototype") = scratch_114 scratch_115 = newfun (1.0) (`self`14, arguments) => decl selector = arguments ⌜⋆⌝ "0" in scratch (9) in :RETURN:: if selector ⌜≈⌝ null scratch_0 = toObj Functions selector = scratch_0 ⌜⋆⌝ "Identity" else `dummy`2 = undef merge scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = selector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Select"(scratch_0, scratch_1) merge scratch_3 = newfun (2.0) (`self`14, arguments) => decl a = arguments ⌜⋆⌝ "0", b = arguments ⌜⋆⌝ "1" in scratch (11) in :RETURN:: if isprim a scratch_0 = a else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = true (scratch_1).("length") = 1.0 scratch_0 = a ⌜⋆⌝ "valueOf"(a, scratch_1) merge merge if isprim b scratch_2 = b else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = true (scratch_3).("length") = 1.0 scratch_2 = b ⌜⋆⌝ "valueOf"(b, 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 jmp :RETURN: scratch_10 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj scratch_2 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = 0.0 (scratch_7).("1") = scratch_3 (scratch_7).("length") = 2.0 scratch_8 = scratch_6 ⌜⋆⌝ "Aggregate"(scratch_6, scratch_7) merge jmp :RETURN: scratch_8 scratch_116 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_116).("length") = 0.0 scratch_117 = new `objectVar`12(scratch_116) merge (scratch_115).("prototype") = scratch_117 scratch_118 = newfun (1.0) (`self`14, arguments) => decl index = arguments ⌜⋆⌝ "0", found = undef, value = undef in scratch (6) in :RETURN:: found = false scratch_0 = newfun (2.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0", i = arguments ⌜⋆⌝ "1" in :RETURN:: if i ⌜≈⌝ index value = x found = true jmp :RETURN: false else `dummy`2 = undef merge 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "ForEach"(scratch_3, scratch_4) merge if ⌞¬⌟ tobool found if isprim `window`0 ⌜⋆⌝ "Error" throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = "index is less than 0 or greater than or equal to the number of elements in source." (scratch_0).("length") = 1.0 scratch_1 = new `window`0 ⌜⋆⌝ "Error"(scratch_0) merge merge throw scratch_1 else `dummy`2 = undef merge jmp :RETURN: value scratch_119 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_119).("length") = 0.0 scratch_120 = new `objectVar`12(scratch_119) merge (scratch_118).("prototype") = scratch_120 scratch_121 = newfun (2.0) (`self`14, arguments) => decl index = arguments ⌜⋆⌝ "0", defaultValue = arguments ⌜⋆⌝ "1", found = undef, value = undef in scratch (6) in :RETURN:: found = false scratch_0 = newfun (2.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0", i = arguments ⌜⋆⌝ "1" in :RETURN:: if i ⌜≈⌝ index value = x found = true jmp :RETURN: false else `dummy`2 = undef merge 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "ForEach"(scratch_3, scratch_4) merge if ⌞¬⌟ tobool found scratch_0 = defaultValue else scratch_0 = value merge jmp :RETURN: scratch_0 scratch_122 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_122).("length") = 0.0 scratch_123 = new `objectVar`12(scratch_122) merge (scratch_121).("prototype") = scratch_123 scratch_124 = newfun (1.0) (`self`14, arguments) => decl predicate = arguments ⌜⋆⌝ "0", found = undef, value = undef in scratch (6) in :RETURN:: if ⌞¬⌟ predicate ⌜≈⌝ null scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = predicate (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Where"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "First"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else `dummy`2 = undef merge found = false scratch_0 = newfun (1.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0" in :RETURN:: value = x found = true jmp :RETURN: false 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "ForEach"(scratch_3, scratch_4) merge if ⌞¬⌟ tobool found if isprim `window`0 ⌜⋆⌝ "Error" throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = "First:No element satisfies the condition." (scratch_0).("length") = 1.0 scratch_1 = new `window`0 ⌜⋆⌝ "Error"(scratch_0) merge merge throw scratch_1 else `dummy`2 = undef merge jmp :RETURN: value scratch_125 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_125).("length") = 0.0 scratch_126 = new `objectVar`12(scratch_125) merge (scratch_124).("prototype") = scratch_126 scratch_127 = newfun (2.0) (`self`14, arguments) => decl defaultValue = arguments ⌜⋆⌝ "0", predicate = arguments ⌜⋆⌝ "1", found = undef, value = undef in scratch (6) in :RETURN:: if ⌞¬⌟ predicate ⌜≈⌝ null scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = predicate (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Where"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = defaultValue (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "FirstOrDefault"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else `dummy`2 = undef merge found = false scratch_0 = newfun (1.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0" in :RETURN:: value = x found = true jmp :RETURN: false 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "ForEach"(scratch_3, scratch_4) merge if ⌞¬⌟ tobool found scratch_0 = defaultValue else scratch_0 = value merge jmp :RETURN: scratch_0 scratch_128 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_128).("length") = 0.0 scratch_129 = new `objectVar`12(scratch_128) merge (scratch_127).("prototype") = scratch_129 scratch_130 = newfun (1.0) (`self`14, arguments) => decl predicate = arguments ⌜⋆⌝ "0", found = undef, value = undef in scratch (6) in :RETURN:: if ⌞¬⌟ predicate ⌜≈⌝ null scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = predicate (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Where"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "Last"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else `dummy`2 = undef merge found = false scratch_0 = newfun (1.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0" in :RETURN:: found = true value = 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "ForEach"(scratch_3, scratch_4) merge if ⌞¬⌟ tobool found if isprim `window`0 ⌜⋆⌝ "Error" throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = "Last:No element satisfies the condition." (scratch_0).("length") = 1.0 scratch_1 = new `window`0 ⌜⋆⌝ "Error"(scratch_0) merge merge throw scratch_1 else `dummy`2 = undef merge jmp :RETURN: value scratch_131 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_131).("length") = 0.0 scratch_132 = new `objectVar`12(scratch_131) merge (scratch_130).("prototype") = scratch_132 scratch_133 = newfun (2.0) (`self`14, arguments) => decl defaultValue = arguments ⌜⋆⌝ "0", predicate = arguments ⌜⋆⌝ "1", found = undef, value = undef in scratch (6) in :RETURN:: if ⌞¬⌟ predicate ⌜≈⌝ null scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = predicate (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Where"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = defaultValue (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "LastOrDefault"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else `dummy`2 = undef merge found = false scratch_0 = newfun (1.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0" in :RETURN:: found = true value = 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "ForEach"(scratch_3, scratch_4) merge if ⌞¬⌟ tobool found scratch_0 = defaultValue else scratch_0 = value merge jmp :RETURN: scratch_0 scratch_134 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_134).("length") = 0.0 scratch_135 = new `objectVar`12(scratch_134) merge (scratch_133).("prototype") = scratch_135 scratch_136 = newfun (1.0) (`self`14, arguments) => decl predicate = arguments ⌜⋆⌝ "0", found = undef, value = undef in scratch (6) in :RETURN:: if ⌞¬⌟ predicate ⌜≈⌝ null scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = predicate (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Where"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "Single"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else `dummy`2 = undef merge found = false scratch_0 = newfun (1.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0" in scratch (2) in :RETURN:: if ⌞¬⌟ tobool found found = true value = x else if isprim `window`0 ⌜⋆⌝ "Error" throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = "Single:sequence contains more than one element." (scratch_0).("length") = 1.0 scratch_1 = new `window`0 ⌜⋆⌝ "Error"(scratch_0) merge merge throw scratch_1 merge 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "ForEach"(scratch_3, scratch_4) merge if ⌞¬⌟ tobool found if isprim `window`0 ⌜⋆⌝ "Error" throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = "Single:No element satisfies the condition." (scratch_0).("length") = 1.0 scratch_1 = new `window`0 ⌜⋆⌝ "Error"(scratch_0) merge merge throw scratch_1 else `dummy`2 = undef merge jmp :RETURN: value scratch_137 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_137).("length") = 0.0 scratch_138 = new `objectVar`12(scratch_137) merge (scratch_136).("prototype") = scratch_138 scratch_139 = newfun (2.0) (`self`14, arguments) => decl defaultValue = arguments ⌜⋆⌝ "0", predicate = arguments ⌜⋆⌝ "1", found = undef, value = undef in scratch (6) in :RETURN:: if ⌞¬⌟ predicate ⌜≈⌝ null scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = predicate (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Where"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = defaultValue (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "SingleOrDefault"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else `dummy`2 = undef merge found = false scratch_0 = newfun (1.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0" in scratch (2) in :RETURN:: if ⌞¬⌟ tobool found found = true value = x else if isprim `window`0 ⌜⋆⌝ "Error" throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = "Single:sequence contains more than one element." (scratch_0).("length") = 1.0 scratch_1 = new `window`0 ⌜⋆⌝ "Error"(scratch_0) merge merge throw scratch_1 merge 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "ForEach"(scratch_3, scratch_4) merge if ⌞¬⌟ tobool found scratch_0 = defaultValue else scratch_0 = value merge jmp :RETURN: scratch_0 scratch_140 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_140).("length") = 0.0 scratch_141 = new `objectVar`12(scratch_140) merge (scratch_139).("prototype") = scratch_141 scratch_142 = newfun (1.0) (`self`14, arguments) => decl count = arguments ⌜⋆⌝ "0", source = undef in scratch (5) in :RETURN:: source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl index = undef, enumerator = undef in scratch (11) in :RETURN:: index = 0.0 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (13) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 :BREAK:: if isprim index scratch_0 = tonum index else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = index (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge scratch_2 = scratch_0 index = scratch_2 ⌜+⌝ 1.0 if typeof scratch_2 ⌜≡⌝ "string" ⌜&&⌝ typeof count ⌜≡⌝ "string" scratch_3 = scratch_2 ⌜≺⌝ count else if isprim scratch_2 scratch_4 = tonum scratch_2 else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_2 (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge if isprim count scratch_6 = tonum count else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = count (scratch_7).("length") = 1.0 scratch_6 = `numberVar`8(`window`0, scratch_7) merge merge scratch_3 = scratch_4 ⌜<⌝ scratch_6 merge if tobool scratch_3 ⌜≡⌝ true scratch_8 = toObj enumerator scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("length") = 0.0 scratch_10 = scratch_8 ⌜⋆⌝ "MoveNext"(scratch_8, scratch_9) merge scratch_11 = scratch_10 else scratch_11 = scratch_3 merge scratch_12 = tobool scratch_11 while scratch_12 merge :CONTINUE:: decl `dummy`2 = null in `dummy`2 = undef merge if isprim index scratch_0 = tonum index else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = index (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge scratch_2 = scratch_0 index = scratch_2 ⌜+⌝ 1.0 if typeof scratch_2 ⌜≡⌝ "string" ⌜&&⌝ typeof count ⌜≡⌝ "string" scratch_3 = scratch_2 ⌜≺⌝ count else if isprim scratch_2 scratch_4 = tonum scratch_2 else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_2 (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge if isprim count scratch_6 = tonum count else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = count (scratch_7).("length") = 1.0 scratch_6 = `numberVar`8(`window`0, scratch_7) merge merge scratch_3 = scratch_4 ⌜<⌝ scratch_6 merge if tobool scratch_3 ⌜≡⌝ true scratch_8 = toObj enumerator scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("length") = 0.0 scratch_10 = scratch_8 ⌜⋆⌝ "MoveNext"(scratch_8, scratch_9) merge scratch_11 = scratch_10 else scratch_11 = scratch_3 merge scratch_12 = tobool scratch_11 merge merge 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (10) in :RETURN:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_3 = toObj enumerator scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "Current"(scratch_3, scratch_4) merge scratch_6 = toObj `self`14 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_5 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "Yield"(scratch_6, scratch_7) merge scratch_9 = scratch_8 else scratch_9 = false merge jmp :RETURN: scratch_9 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_143 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_143).("length") = 0.0 scratch_144 = new `objectVar`12(scratch_143) merge (scratch_142).("prototype") = scratch_144 scratch_145 = newfun (1.0) (`self`14, arguments) => decl predicate = arguments ⌜⋆⌝ "0", source = undef in scratch (5) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = predicate (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge predicate = scratch_2 source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl isSkipEnd = undef, index = undef, enumerator = undef in scratch (11) in :RETURN:: index = 0.0 isSkipEnd = false scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (10) in :RETURN:: :BREAK:: scratch_0 = ⌞¬⌟ tobool isSkipEnd while scratch_0 merge :CONTINUE:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge if isprim index scratch_3 = tonum index else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = index (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge scratch_5 = scratch_3 index = scratch_5 ⌜+⌝ 1.0 scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = scratch_2 (scratch_6).("1") = scratch_5 (scratch_6).("length") = 2.0 scratch_7 = predicate(`window`0, scratch_6) merge if ⌞¬⌟ tobool scratch_7 isSkipEnd = true scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Yield"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else `dummy`2 = undef merge jmp :CONTINUE: undef else jmp :RETURN: false merge merge scratch_0 = ⌞¬⌟ tobool isSkipEnd merge merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_3 = toObj enumerator scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "Current"(scratch_3, scratch_4) merge scratch_6 = toObj `self`14 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_5 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "Yield"(scratch_6, scratch_7) merge scratch_9 = scratch_8 else scratch_9 = false merge jmp :RETURN: scratch_9 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_146 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_146).("length") = 0.0 scratch_147 = new `objectVar`12(scratch_146) merge (scratch_145).("prototype") = scratch_147 scratch_148 = newfun (1.0) (`self`14, arguments) => decl count = arguments ⌜⋆⌝ "0", source = undef in scratch (5) in :RETURN:: source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl index = undef, enumerator = undef in scratch (11) in :RETURN:: index = 0.0 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (19) in :RETURN:: if isprim index scratch_0 = tonum index else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = index (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge scratch_2 = scratch_0 index = scratch_2 ⌜+⌝ 1.0 if typeof scratch_2 ⌜≡⌝ "string" ⌜&&⌝ typeof count ⌜≡⌝ "string" scratch_3 = scratch_2 ⌜≺⌝ count else if isprim scratch_2 scratch_4 = tonum scratch_2 else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_2 (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge if isprim count scratch_6 = tonum count else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = count (scratch_7).("length") = 1.0 scratch_6 = `numberVar`8(`window`0, scratch_7) merge merge scratch_3 = scratch_4 ⌜<⌝ scratch_6 merge if tobool scratch_3 ⌜≡⌝ true scratch_8 = toObj enumerator scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("length") = 0.0 scratch_10 = scratch_8 ⌜⋆⌝ "MoveNext"(scratch_8, scratch_9) merge scratch_11 = scratch_10 else scratch_11 = scratch_3 merge if tobool scratch_11 scratch_12 = toObj enumerator scratch_13 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_13).("length") = 0.0 scratch_14 = scratch_12 ⌜⋆⌝ "Current"(scratch_12, scratch_13) merge scratch_15 = toObj `self`14 scratch_16 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_16).("0") = scratch_14 (scratch_16).("length") = 1.0 scratch_17 = scratch_15 ⌜⋆⌝ "Yield"(scratch_15, scratch_16) merge scratch_18 = scratch_17 else scratch_18 = false merge jmp :RETURN: scratch_18 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_149 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_149).("length") = 0.0 scratch_150 = new `objectVar`12(scratch_149) merge (scratch_148).("prototype") = scratch_150 scratch_151 = newfun (1.0) (`self`14, arguments) => decl predicate = arguments ⌜⋆⌝ "0", source = undef in scratch (5) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = predicate (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge predicate = scratch_2 source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl index = undef, enumerator = undef in scratch (11) in :RETURN:: index = 0.0 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (19) in :RETURN:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 ⌜≡⌝ true scratch_3 = toObj enumerator scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "Current"(scratch_3, scratch_4) merge if isprim index scratch_6 = tonum index else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = index (scratch_7).("length") = 1.0 scratch_6 = `numberVar`8(`window`0, scratch_7) merge merge scratch_8 = scratch_6 index = scratch_8 ⌜+⌝ 1.0 scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_5 (scratch_9).("1") = scratch_8 (scratch_9).("length") = 2.0 scratch_10 = predicate(`window`0, scratch_9) merge scratch_11 = scratch_10 else scratch_11 = scratch_2 merge if tobool scratch_11 scratch_12 = toObj enumerator scratch_13 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_13).("length") = 0.0 scratch_14 = scratch_12 ⌜⋆⌝ "Current"(scratch_12, scratch_13) merge scratch_15 = toObj `self`14 scratch_16 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_16).("0") = scratch_14 (scratch_16).("length") = 1.0 scratch_17 = scratch_15 ⌜⋆⌝ "Yield"(scratch_15, scratch_16) merge scratch_18 = scratch_17 else scratch_18 = false merge jmp :RETURN: scratch_18 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_152 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_152).("length") = 0.0 scratch_153 = new `objectVar`12(scratch_152) merge (scratch_151).("prototype") = scratch_153 scratch_154 = newfun (1.0) (`self`14, arguments) => decl count = arguments ⌜⋆⌝ "0", source = undef in scratch (5) in :RETURN:: if count ⌜≈⌝ null count = 1.0 else `dummy`2 = undef merge source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl q = undef, enumerator = undef in scratch (11) in :RETURN:: if typeof count ⌜≡⌝ "string" ⌜&&⌝ false scratch_0 = count ⌜≼⌝ 0.0 else if isprim count scratch_1 = tonum count else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = count (scratch_2).("length") = 1.0 scratch_1 = `numberVar`8(`window`0, scratch_2) merge merge scratch_0 = scratch_1 ⌜≤⌝ 0.0 merge if tobool scratch_0 scratch_3 = toObj source scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "GetEnumerator"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else `dummy`2 = undef merge scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("length") = 0.0 q = scratch_1 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (6) in :RETURN:: :BREAK:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 while scratch_3 merge :CONTINUE:: scratch_0 = toObj q if scratch_0 ⌜⋆⌝ "length" ⌜≈⌝ count scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = toObj q scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "push"(scratch_3, scratch_4) merge scratch_0 = toObj q scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "shift"(scratch_0, scratch_1) merge scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Yield"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else `dummy`2 = undef merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = toObj q scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "push"(scratch_3, scratch_4) merge merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 merge merge jmp :RETURN: false scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_155 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_155).("length") = 0.0 scratch_156 = new `objectVar`12(scratch_155) merge (scratch_154).("prototype") = scratch_156 scratch_157 = newfun (1.0) (`self`14, arguments) => decl count = arguments ⌜⋆⌝ "0", source = undef in scratch (7) in :RETURN:: if typeof count ⌜≡⌝ "string" ⌜&&⌝ false scratch_0 = count ⌜≼⌝ 0.0 else if isprim count scratch_1 = tonum count else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = count (scratch_2).("length") = 1.0 scratch_1 = `numberVar`8(`window`0, scratch_2) merge merge scratch_0 = scratch_1 ⌜≤⌝ 0.0 merge if tobool scratch_0 ⌜≡⌝ false scratch_3 = count ⌜≈⌝ null else scratch_3 = scratch_0 merge if tobool scratch_3 scratch_4 = toObj Enumerable scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("length") = 0.0 scratch_6 = scratch_4 ⌜⋆⌝ "Empty"(scratch_4, scratch_5) merge jmp :RETURN: scratch_6 else `dummy`2 = undef merge source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl q = undef, enumerator = undef, sourceEnumerator = undef in scratch (11) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("length") = 0.0 q = scratch_1 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge sourceEnumerator = scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (10) in :RETURN:: :BREAK:: scratch_0 = toObj sourceEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 while scratch_3 merge :CONTINUE:: scratch_0 = toObj q if scratch_0 ⌜⋆⌝ "length" ⌜≈⌝ count scratch_1 = toObj q scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = scratch_1 ⌜⋆⌝ "shift"(scratch_1, scratch_2) merge else `dummy`2 = undef merge scratch_0 = toObj sourceEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = toObj q scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "push"(scratch_3, scratch_4) merge merge scratch_0 = toObj sourceEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 merge merge if enumerator ⌜≈⌝ null scratch_0 = toObj Enumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = q (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "From"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "GetEnumerator"(scratch_3, scratch_4) merge enumerator = scratch_5 else `dummy`2 = undef merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_3 = toObj enumerator scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "Current"(scratch_3, scratch_4) merge scratch_6 = toObj `self`14 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_5 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "Yield"(scratch_6, scratch_7) merge scratch_9 = scratch_8 else scratch_9 = false merge jmp :RETURN: scratch_9 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_158 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_158).("length") = 0.0 scratch_159 = new `objectVar`12(scratch_158) merge (scratch_157).("prototype") = scratch_159 scratch_160 = newfun (1.0) (`self`14, arguments) => decl item = arguments ⌜⋆⌝ "0", found = undef in scratch (6) in :RETURN:: found = null scratch_0 = newfun (2.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0", i = arguments ⌜⋆⌝ "1" in :RETURN:: if x ⌜≡⌝ item found = i jmp :RETURN: true else `dummy`2 = undef merge 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "ForEach"(scratch_3, scratch_4) merge if ⌞¬⌟ found ⌜≡⌝ null scratch_0 = found else scratch_0 = ⌞−⌟ 1.0 merge jmp :RETURN: scratch_0 scratch_161 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_161).("length") = 0.0 scratch_162 = new `objectVar`12(scratch_161) merge (scratch_160).("prototype") = scratch_162 scratch_163 = newfun (1.0) (`self`14, arguments) => decl item = arguments ⌜⋆⌝ "0", result = undef in scratch (6) in :RETURN:: result = ⌞−⌟ 1.0 scratch_0 = newfun (2.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0", i = arguments ⌜⋆⌝ "1" in :RETURN:: if x ⌜≡⌝ item result = i else `dummy`2 = undef merge 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "ForEach"(scratch_3, scratch_4) merge jmp :RETURN: result scratch_164 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_164).("length") = 0.0 scratch_165 = new `objectVar`12(scratch_164) merge (scratch_163).("prototype") = scratch_165 scratch_166 = newfun (0.0) (`self`14, arguments) => decl array = undef in scratch (6) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("length") = 0.0 array = scratch_1 scratch_0 = newfun (1.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0" in scratch (3) in :RETURN:: scratch_0 = toObj array scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = x (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "push"(scratch_0, scratch_1) merge 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "ForEach"(scratch_3, scratch_4) merge jmp :RETURN: array scratch_167 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_167).("length") = 0.0 scratch_168 = new `objectVar`12(scratch_167) merge (scratch_166).("prototype") = scratch_168 scratch_169 = newfun (3.0) (`self`14, arguments) => decl keySelector = arguments ⌜⋆⌝ "0", elementSelector = arguments ⌜⋆⌝ "1", compareSelector = arguments ⌜⋆⌝ "2", dict = undef in scratch (6) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = keySelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge keySelector = scratch_2 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = elementSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge elementSelector = scratch_2 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = compareSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge compareSelector = scratch_2 if isprim Dictionary throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = compareSelector (scratch_0).("length") = 1.0 scratch_1 = new Dictionary(scratch_0) merge merge dict = scratch_1 scratch_0 = newfun (1.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0", array = undef, element = undef, key = undef in scratch (8) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = x (scratch_0).("length") = 1.0 scratch_1 = keySelector(`window`0, scratch_0) merge key = scratch_1 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = x (scratch_0).("length") = 1.0 scratch_1 = elementSelector(`window`0, scratch_0) merge element = scratch_1 scratch_0 = toObj dict scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = key (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Get"(scratch_0, scratch_1) merge array = scratch_2 if ⌞¬⌟ array ⌜≡⌝ `window`0 ⌜⋆⌝ "undefined" scratch_0 = toObj array scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = element (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "push"(scratch_0, scratch_1) merge else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `arrayVar`3(scratch_3) merge (scratch_4).("0") = element (scratch_4).("length") = 1.0 scratch_5 = toObj dict scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = key (scratch_6).("1") = scratch_4 (scratch_6).("length") = 2.0 scratch_7 = scratch_5 ⌜⋆⌝ "Add"(scratch_5, scratch_6) merge merge 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "ForEach"(scratch_3, scratch_4) merge if isprim Lookup throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = dict (scratch_0).("length") = 1.0 scratch_1 = new Lookup(scratch_0) merge merge jmp :RETURN: scratch_1 scratch_170 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_170).("length") = 0.0 scratch_171 = new `objectVar`12(scratch_170) merge (scratch_169).("prototype") = scratch_171 scratch_172 = newfun (2.0) (`self`14, arguments) => decl keySelector = arguments ⌜⋆⌝ "0", elementSelector = arguments ⌜⋆⌝ "1", obj = undef in scratch (6) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = keySelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge keySelector = scratch_2 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = elementSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge elementSelector = scratch_2 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `objectVar`12(scratch_0) obj = scratch_1 scratch_0 = newfun (1.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0" in scratch (7) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = x (scratch_0).("length") = 1.0 scratch_1 = keySelector(`window`0, scratch_0) merge scratch_2 = toObj obj if isprim scratch_1 scratch_3 = tostr scratch_1 else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_3 = scratch_1 ⌜⋆⌝ "toString"(scratch_1, scratch_4) merge merge scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = x (scratch_5).("length") = 1.0 scratch_6 = elementSelector(`window`0, scratch_5) merge (scratch_2).(scratch_3) = scratch_6 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "ForEach"(scratch_3, scratch_4) merge jmp :RETURN: obj scratch_173 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_173).("length") = 0.0 scratch_174 = new `objectVar`12(scratch_173) merge (scratch_172).("prototype") = scratch_174 scratch_175 = newfun (3.0) (`self`14, arguments) => decl keySelector = arguments ⌜⋆⌝ "0", elementSelector = arguments ⌜⋆⌝ "1", compareSelector = arguments ⌜⋆⌝ "2", dict = undef in scratch (6) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = keySelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge keySelector = scratch_2 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = elementSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge elementSelector = scratch_2 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = compareSelector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge compareSelector = scratch_2 if isprim Dictionary throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = compareSelector (scratch_0).("length") = 1.0 scratch_1 = new Dictionary(scratch_0) merge merge dict = scratch_1 scratch_0 = newfun (1.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0" in scratch (7) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = x (scratch_0).("length") = 1.0 scratch_1 = keySelector(`window`0, scratch_0) merge scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = x (scratch_2).("length") = 1.0 scratch_3 = elementSelector(`window`0, scratch_2) merge scratch_4 = toObj dict scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_1 (scratch_5).("1") = scratch_3 (scratch_5).("length") = 2.0 scratch_6 = scratch_4 ⌜⋆⌝ "Add"(scratch_4, scratch_5) merge 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "ForEach"(scratch_3, scratch_4) merge jmp :RETURN: dict scratch_176 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_176).("length") = 0.0 scratch_177 = new `objectVar`12(scratch_176) merge (scratch_175).("prototype") = scratch_177 scratch_178 = newfun (2.0) (`self`14, arguments) => decl replacer = arguments ⌜⋆⌝ "0", space = arguments ⌜⋆⌝ "1" in scratch (6) in :RETURN:: scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "ToArray"(scratch_0, scratch_1) merge scratch_3 = toObj `window`0 ⌜⋆⌝ "JSON" scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("1") = replacer (scratch_4).("2") = space (scratch_4).("length") = 3.0 scratch_5 = scratch_3 ⌜⋆⌝ "stringify"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 scratch_179 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_179).("length") = 0.0 scratch_180 = new `objectVar`12(scratch_179) merge (scratch_178).("prototype") = scratch_180 scratch_181 = newfun (2.0) (`self`14, arguments) => decl separator = arguments ⌜⋆⌝ "0", selector = arguments ⌜⋆⌝ "1" in scratch (9) in :RETURN:: if separator ⌜≈⌝ null separator = "" else `dummy`2 = undef merge if selector ⌜≈⌝ null scratch_0 = toObj Functions selector = scratch_0 ⌜⋆⌝ "Identity" else `dummy`2 = undef merge scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = selector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Select"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "ToArray"(scratch_3, scratch_4) merge scratch_6 = toObj scratch_5 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = separator (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "join"(scratch_6, scratch_7) merge jmp :RETURN: scratch_8 scratch_182 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_182).("length") = 0.0 scratch_183 = new `objectVar`12(scratch_182) merge (scratch_181).("prototype") = scratch_183 scratch_184 = newfun (1.0) (`self`14, arguments) => decl action = arguments ⌜⋆⌝ "0", source = undef in scratch (5) in :RETURN:: source = `self`14 scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = action (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge action = scratch_2 scratch_0 = newfun (0.0) (`self`14, arguments) => decl index = undef, enumerator = undef in scratch (11) in :RETURN:: index = 0.0 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (8) in :RETURN:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge if isprim index scratch_3 = tonum index else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = index (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge scratch_5 = scratch_3 index = scratch_5 ⌜+⌝ 1.0 scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = scratch_2 (scratch_6).("1") = scratch_5 (scratch_6).("length") = 2.0 scratch_7 = action(`window`0, scratch_6) merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Yield"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 else `dummy`2 = undef merge jmp :RETURN: false scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_185 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_185).("length") = 0.0 scratch_186 = new `objectVar`12(scratch_185) merge (scratch_184).("prototype") = scratch_186 scratch_187 = newfun (1.0) (`self`14, arguments) => decl action = arguments ⌜⋆⌝ "0", enumerator = undef, index = undef, `tempPVar`123 = undef in scratch (8) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = action (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge action = scratch_2 index = 0.0 scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 try :BREAK:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 while scratch_3 merge :CONTINUE:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Current"(scratch_0, scratch_1) merge if isprim index scratch_3 = tonum index else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = index (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge scratch_5 = scratch_3 index = scratch_5 ⌜+⌝ 1.0 scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = scratch_2 (scratch_6).("1") = scratch_5 (scratch_6).("length") = 2.0 scratch_7 = action(`window`0, scratch_6) merge if scratch_7 ⌜≡⌝ false jmp :BREAK: undef else `dummy`2 = undef merge merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 merge merge catch `tempPVar`123 merge throw `tempPVar`123 finally merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_188 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_188).("length") = 0.0 scratch_189 = new `objectVar`12(scratch_188) merge (scratch_187).("prototype") = scratch_189 scratch_190 = newfun (2.0) (`self`14, arguments) => decl separator = arguments ⌜⋆⌝ "0", selector = arguments ⌜⋆⌝ "1", isFirst = undef in scratch (6) in :RETURN:: if separator ⌜≈⌝ null separator = "" else `dummy`2 = undef merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = selector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge selector = scratch_2 isFirst = true scratch_0 = newfun (1.0) (`self`14, arguments) => decl item = arguments ⌜⋆⌝ "0" in scratch (4) in :RETURN:: if tobool isFirst isFirst = false else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = separator (scratch_0).("length") = 1.0 scratch_1 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_0) merge merge scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = item (scratch_0).("length") = 1.0 scratch_1 = selector(`window`0, scratch_0) merge scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = scratch_1 (scratch_2).("length") = 1.0 scratch_3 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_2) merge 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "ForEach"(scratch_3, scratch_4) merge scratch_191 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_191).("length") = 0.0 scratch_192 = new `objectVar`12(scratch_191) merge (scratch_190).("prototype") = scratch_192 scratch_193 = newfun (1.0) (`self`14, arguments) => decl selector = arguments ⌜⋆⌝ "0" in scratch (6) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = selector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge selector = scratch_2 scratch_0 = newfun (1.0) (`self`14, arguments) => decl item = arguments ⌜⋆⌝ "0" in scratch (4) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = item (scratch_0).("length") = 1.0 scratch_1 = selector(`window`0, scratch_0) merge scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = scratch_1 (scratch_2).("length") = 1.0 scratch_3 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_2) merge scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = "
" (scratch_0).("length") = 1.0 scratch_1 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_0) merge 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "ForEach"(scratch_3, scratch_4) merge scratch_194 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_194).("length") = 0.0 scratch_195 = new `objectVar`12(scratch_194) merge (scratch_193).("prototype") = scratch_195 scratch_196 = newfun (0.0) (`self`14, arguments) => decl enumerator = undef, `tempPVar`124 = undef in scratch (4) in :RETURN:: scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 try :BREAK:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 while scratch_3 merge :CONTINUE:: decl `dummy`2 = null in `dummy`2 = undef merge scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge scratch_3 = tobool scratch_2 merge merge catch `tempPVar`124 merge throw `tempPVar`124 finally merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_197 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_197).("length") = 0.0 scratch_198 = new `objectVar`12(scratch_197) merge (scratch_196).("prototype") = scratch_198 scratch_199 = newfun (1.0) (`self`14, arguments) => decl func = arguments ⌜⋆⌝ "0", source = undef in scratch (5) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = func (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge func = scratch_2 source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl enumerator = undef in scratch (11) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (8) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = source (scratch_0).("length") = 1.0 scratch_1 = func(`window`0, scratch_0) merge scratch_2 = toObj Enumerable scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_1 (scratch_3).("length") = 1.0 scratch_4 = scratch_2 ⌜⋆⌝ "From"(scratch_2, scratch_3) merge scratch_5 = toObj scratch_4 scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("length") = 0.0 scratch_7 = scratch_5 ⌜⋆⌝ "GetEnumerator"(scratch_5, scratch_6) merge enumerator = scratch_7 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (10) in :RETURN:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_3 = toObj enumerator scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "Current"(scratch_3, scratch_4) merge scratch_6 = toObj `self`14 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_5 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "Yield"(scratch_6, scratch_7) merge scratch_9 = scratch_8 else scratch_9 = false merge jmp :RETURN: scratch_9 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_200 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_200).("length") = 0.0 scratch_201 = new `objectVar`12(scratch_200) merge (scratch_199).("prototype") = scratch_201 scratch_202 = newfun (0.0) (`self`14, arguments) => decl sharedEnumerator = undef, source = undef in scratch (5) in :RETURN:: source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (9) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: if sharedEnumerator ⌜≈⌝ null scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge sharedEnumerator = scratch_2 else `dummy`2 = undef merge 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (10) in :RETURN:: scratch_0 = toObj sharedEnumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_3 = toObj sharedEnumerator scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "Current"(scratch_3, scratch_4) merge scratch_6 = toObj `self`14 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_5 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "Yield"(scratch_6, scratch_7) merge scratch_9 = scratch_8 else scratch_9 = false merge jmp :RETURN: scratch_9 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_0 (scratch_7).("1") = scratch_3 (scratch_7).("2") = scratch_6 ⌜⋆⌝ "Blank" (scratch_7).("length") = 3.0 scratch_8 = new IEnumerator(scratch_7) merge merge jmp :RETURN: scratch_8 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_203 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_203).("length") = 0.0 scratch_204 = new `objectVar`12(scratch_203) merge (scratch_202).("prototype") = scratch_204 scratch_205 = newfun (0.0) (`self`14, arguments) => decl enumerator = undef, cache = undef, source = undef in scratch (5) in :RETURN:: source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl index = undef in scratch (9) in :RETURN:: index = ⌞−⌟ 1.0 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: if enumerator ⌜≈⌝ null scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("length") = 0.0 cache = scratch_1 else `dummy`2 = undef merge 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (13) in :RETURN:: if isprim index scratch_0 = tonum index else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = index (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge scratch_2 = scratch_0 index = scratch_2 ⌜+⌝ 1.0 scratch_0 = toObj cache if typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" ⌜&&⌝ typeof index ⌜≡⌝ "string" scratch_1 = scratch_0 ⌜⋆⌝ "length" ⌜≼⌝ index else if isprim scratch_0 ⌜⋆⌝ "length" scratch_2 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim index scratch_4 = tonum index else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = index (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_1 = scratch_2 ⌜≤⌝ scratch_4 merge if tobool scratch_1 scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_3 = toObj cache if isprim index scratch_4 = tostr index else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("length") = 0.0 scratch_4 = index ⌜⋆⌝ "toString"(index, scratch_5) merge merge scratch_6 = toObj enumerator scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = scratch_6 ⌜⋆⌝ "Current"(scratch_6, scratch_7) merge (scratch_3).(scratch_4) = scratch_8 scratch_9 = toObj `self`14 scratch_10 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_10).("0") = scratch_8 (scratch_10).("length") = 1.0 scratch_11 = scratch_9 ⌜⋆⌝ "Yield"(scratch_9, scratch_10) merge scratch_12 = scratch_11 else scratch_12 = false merge jmp :RETURN: scratch_12 else `dummy`2 = undef merge scratch_0 = toObj cache if isprim index scratch_1 = tostr index else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_1 = index ⌜⋆⌝ "toString"(index, scratch_2) merge merge scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 ⌜⋆⌝ scratch_1 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Yield"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_0 (scratch_7).("1") = scratch_3 (scratch_7).("2") = scratch_6 ⌜⋆⌝ "Blank" (scratch_7).("length") = 3.0 scratch_8 = new IEnumerator(scratch_7) merge merge jmp :RETURN: scratch_8 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_206 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_206).("length") = 0.0 scratch_207 = new `objectVar`12(scratch_206) merge (scratch_205).("prototype") = scratch_207 scratch_208 = newfun (1.0) (`self`14, arguments) => decl handler = arguments ⌜⋆⌝ "0", source = undef in scratch (5) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = handler (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge handler = scratch_2 source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl enumerator = undef in scratch (11) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => decl t`1 = undef in scratch (10) in :RETURN:: try scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_3 = toObj enumerator scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "Current"(scratch_3, scratch_4) merge scratch_6 = toObj `self`14 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_5 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "Yield"(scratch_6, scratch_7) merge scratch_9 = scratch_8 else scratch_9 = false merge jmp :RETURN: scratch_9 catch t`1 merge scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = t`1 (scratch_0).("length") = 1.0 scratch_1 = handler(`window`0, scratch_0) merge jmp :RETURN: false finally merge scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_209 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_209).("length") = 0.0 scratch_210 = new `objectVar`12(scratch_209) merge (scratch_208).("prototype") = scratch_210 scratch_211 = newfun (1.0) (`self`14, arguments) => decl finallyAction = arguments ⌜⋆⌝ "0", source = undef in scratch (5) in :RETURN:: scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = finallyAction (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge finallyAction = scratch_2 source = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl enumerator = undef in scratch (11) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj source scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "GetEnumerator"(scratch_0, scratch_1) merge enumerator = scratch_2 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (10) in :RETURN:: scratch_0 = toObj enumerator scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "MoveNext"(scratch_0, scratch_1) merge if tobool scratch_2 scratch_3 = toObj enumerator scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "Current"(scratch_3, scratch_4) merge scratch_6 = toObj `self`14 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_5 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "Yield"(scratch_6, scratch_7) merge scratch_9 = scratch_8 else scratch_9 = false merge jmp :RETURN: scratch_9 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => decl `tempPVar`130 = undef in scratch (3) in :RETURN:: try scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = enumerator (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge catch `tempPVar`130 merge throw `tempPVar`130 finally merge scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = finallyAction(`window`0, scratch_0) merge scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 if isprim IEnumerator throw "TypeError" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_0 (scratch_9).("1") = scratch_3 (scratch_9).("2") = scratch_6 (scratch_9).("length") = 3.0 scratch_10 = new IEnumerator(scratch_9) merge merge jmp :RETURN: scratch_10 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_212 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_212).("length") = 0.0 scratch_213 = new `objectVar`12(scratch_212) merge (scratch_211).("prototype") = scratch_213 scratch_214 = newfun (2.0) (`self`14, arguments) => decl message = arguments ⌜⋆⌝ "0", selector = arguments ⌜⋆⌝ "1" in scratch (6) in :RETURN:: if message ⌜≈⌝ null message = "Trace" else `dummy`2 = undef merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = selector (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateLambda"(scratch_0, scratch_1) merge selector = scratch_2 scratch_0 = newfun (1.0) (`self`14, arguments) => decl item = arguments ⌜⋆⌝ "0" in scratch (21) in :RETURN:: if isprim message scratch_0 = message else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = true (scratch_1).("length") = 1.0 scratch_0 = message ⌜⋆⌝ "valueOf"(message, scratch_1) merge merge if isprim scratch_0 scratch_2 = scratch_0 else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "toString"(scratch_0, scratch_3) merge merge if isprim scratch_2 scratch_4 = scratch_2 else throw "TypeError" merge if typeof scratch_4 ⌜≡⌝ "string" scratch_5 = scratch_4 ⌜++⌝ ":" else scratch_5 = tostr scratch_4 ⌜++⌝ ":" merge scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = item (scratch_6).("length") = 1.0 scratch_7 = selector(`window`0, scratch_6) merge if isprim scratch_5 scratch_8 = scratch_5 else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = true (scratch_9).("length") = 1.0 scratch_8 = scratch_5 ⌜⋆⌝ "valueOf"(scratch_5, scratch_9) merge merge if isprim scratch_7 scratch_10 = scratch_7 else scratch_11 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_11).("0") = true (scratch_11).("length") = 1.0 scratch_10 = scratch_7 ⌜⋆⌝ "valueOf"(scratch_7, scratch_11) merge merge if isprim scratch_8 scratch_12 = scratch_8 else scratch_13 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_13).("length") = 0.0 scratch_12 = scratch_8 ⌜⋆⌝ "toString"(scratch_8, scratch_13) merge merge if isprim scratch_10 scratch_14 = scratch_10 else scratch_15 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_15).("length") = 0.0 scratch_14 = scratch_10 ⌜⋆⌝ "toString"(scratch_10, scratch_15) merge merge if isprim scratch_12 scratch_16 = scratch_12 else throw "TypeError" merge if isprim scratch_14 scratch_17 = scratch_14 else throw "TypeError" merge if typeof scratch_16 ⌜≡⌝ "string" scratch_18 = scratch_16 ⌜++⌝ tostr scratch_17 else if typeof scratch_17 ⌜≡⌝ "string" scratch_18 = tostr scratch_16 ⌜++⌝ scratch_17 else scratch_18 = tonum scratch_16 ⌜+⌝ tonum scratch_17 merge merge scratch_19 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_19).("0") = scratch_18 (scratch_19).("length") = 1.0 scratch_20 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_19) merge 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 scratch_3 = toObj `self`14 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Do"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 scratch_215 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_215).("length") = 0.0 scratch_216 = new `objectVar`12(scratch_215) merge (scratch_214).("prototype") = scratch_216 scratch_217 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_217).("length") = 0.0 scratch_218 = new `objectVar`12(scratch_217) (scratch_218).("CascadeBreadthFirst") = scratch_1 (scratch_218).("CascadeDepthFirst") = scratch_4 (scratch_218).("Flatten") = scratch_7 (scratch_218).("Pairwise") = scratch_10 (scratch_218).("Scan") = scratch_13 (scratch_218).("Select") = scratch_16 (scratch_218).("SelectMany") = scratch_19 (scratch_218).("Where") = scratch_22 (scratch_218).("OfType") = scratch_25 (scratch_218).("Zip") = scratch_28 (scratch_218).("Join") = scratch_31 (scratch_218).("GroupJoin") = scratch_34 (scratch_218).("All") = scratch_37 (scratch_218).("Any") = scratch_40 (scratch_218).("Concat") = scratch_43 (scratch_218).("Insert") = scratch_46 (scratch_218).("Alternate") = scratch_49 (scratch_218).("Contains") = scratch_52 (scratch_218).("DefaultIfEmpty") = scratch_55 (scratch_218).("Distinct") = scratch_58 (scratch_218).("Except") = scratch_61 (scratch_218).("Intersect") = scratch_64 (scratch_218).("SequenceEqual") = scratch_67 (scratch_218).("Union") = scratch_70 (scratch_218).("OrderBy") = scratch_73 (scratch_218).("OrderByDescending") = scratch_76 (scratch_218).("Reverse") = scratch_79 (scratch_218).("Shuffle") = scratch_82 (scratch_218).("GroupBy") = scratch_85 (scratch_218).("PartitionBy") = scratch_88 (scratch_218).("BufferWithCount") = scratch_91 (scratch_218).("Aggregate") = scratch_94 (scratch_218).("Average") = scratch_97 (scratch_218).("Count") = scratch_100 (scratch_218).("Max") = scratch_103 (scratch_218).("Min") = scratch_106 (scratch_218).("MaxBy") = scratch_109 (scratch_218).("MinBy") = scratch_112 (scratch_218).("Sum") = scratch_115 (scratch_218).("ElementAt") = scratch_118 (scratch_218).("ElementAtOrDefault") = scratch_121 (scratch_218).("First") = scratch_124 (scratch_218).("FirstOrDefault") = scratch_127 (scratch_218).("Last") = scratch_130 (scratch_218).("LastOrDefault") = scratch_133 (scratch_218).("Single") = scratch_136 (scratch_218).("SingleOrDefault") = scratch_139 (scratch_218).("Skip") = scratch_142 (scratch_218).("SkipWhile") = scratch_145 (scratch_218).("Take") = scratch_148 (scratch_218).("TakeWhile") = scratch_151 (scratch_218).("TakeExceptLast") = scratch_154 (scratch_218).("TakeFromLast") = scratch_157 (scratch_218).("IndexOf") = scratch_160 (scratch_218).("LastIndexOf") = scratch_163 (scratch_218).("ToArray") = scratch_166 (scratch_218).("ToLookup") = scratch_169 (scratch_218).("ToObject") = scratch_172 (scratch_218).("ToDictionary") = scratch_175 (scratch_218).("ToJSON") = scratch_178 (scratch_218).("ToString") = scratch_181 (scratch_218).("Do") = scratch_184 (scratch_218).("ForEach") = scratch_187 (scratch_218).("Write") = scratch_190 (scratch_218).("WriteLine") = scratch_193 (scratch_218).("Force") = scratch_196 (scratch_218).("Let") = scratch_199 (scratch_218).("Share") = scratch_202 (scratch_218).("MemoizeAll") = scratch_205 (scratch_218).("Catch") = scratch_208 (scratch_218).("Finally") = scratch_211 (scratch_218).("Trace") = scratch_214 (scratch_0).("prototype") = scratch_218 scratch_0 = newfun (1.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0" in :RETURN:: 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 scratch_3 = newfun (0.0) (`self`14, arguments) => :RETURN:: jmp :RETURN: true scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (0.0) (`self`14, arguments) => :RETURN:: decl `dummy`2 = null in `dummy`2 = undef scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("length") = 0.0 scratch_10 = new `objectVar`12(scratch_9) (scratch_10).("Identity") = scratch_0 (scratch_10).("True") = scratch_3 (scratch_10).("Blank") = scratch_6 Functions = scratch_10 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `objectVar`12(scratch_0) scratch_2 = newfun (0.0) (`self`14, arguments) => :RETURN:: decl `dummy`2 = null in `dummy`2 = undef scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("length") = 0.0 scratch_6 = new `objectVar`12(scratch_5) (scratch_6).("Boolean") = typeof true (scratch_6).("Number") = typeof 0.0 (scratch_6).("String") = typeof "" (scratch_6).("Object") = typeof scratch_1 (scratch_6).("Undefined") = typeof `window`0 ⌜⋆⌝ "undefined" (scratch_6).("Function") = typeof scratch_2 Types = scratch_6 scratch_0 = newfun (1.0) (`self`14, arguments) => decl expression = arguments ⌜⋆⌝ "0" in scratch (1) in :RETURN:: if ⌞¬⌟ tobool expression scratch_0 = toObj Functions jmp :RETURN: scratch_0 ⌜⋆⌝ "Identity" else `dummy`2 = undef merge jmp :RETURN: expression 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 scratch_3 = newfun (1.0) (`self`14, arguments) => decl obj = arguments ⌜⋆⌝ "0", t`2 = undef in scratch (2) in :RETURN:: scratch_0 = toObj Types if ⌞¬⌟ typeof `window`0 ⌜⋆⌝ "Enumerator" ⌜≈⌝ scratch_0 ⌜⋆⌝ "Undefined" try if isprim `window`0 ⌜⋆⌝ "Enumerator" throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = obj (scratch_0).("length") = 1.0 scratch_1 = new `window`0 ⌜⋆⌝ "Enumerator"(scratch_0) merge merge jmp :RETURN: true catch t`2 merge decl `dummy`2 = null in `dummy`2 = undef finally merge else `dummy`2 = undef merge jmp :RETURN: false scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = newfun (2.0) (`self`14, arguments) => decl a = arguments ⌜⋆⌝ "0", b = arguments ⌜⋆⌝ "1" in scratch (7) in :RETURN:: if a ⌜≡⌝ b scratch_0 = 0.0 else if typeof b ⌜≡⌝ "string" ⌜&&⌝ typeof a ⌜≡⌝ "string" scratch_1 = b ⌜≺⌝ a else if isprim b scratch_2 = tonum b else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = b (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim a scratch_4 = tonum a else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = a (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_1 = scratch_2 ⌜<⌝ scratch_4 merge if tobool scratch_1 scratch_6 = 1.0 else scratch_6 = ⌞−⌟ 1.0 merge scratch_0 = scratch_6 merge jmp :RETURN: scratch_0 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = new `objectVar`12(scratch_7) merge (scratch_6).("prototype") = scratch_8 scratch_9 = newfun (1.0) (`self`14, arguments) => decl obj = arguments ⌜⋆⌝ "0" in scratch (3) in :RETURN:: if ⌞¬⌟ obj ⌜≈⌝ null scratch_0 = toObj obj scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge else `dummy`2 = undef merge scratch_10 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_10).("length") = 0.0 scratch_11 = new `objectVar`12(scratch_10) merge (scratch_9).("prototype") = scratch_11 scratch_12 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_12).("length") = 0.0 scratch_13 = new `objectVar`12(scratch_12) (scratch_13).("CreateLambda") = scratch_0 (scratch_13).("IsIEnumerable") = scratch_3 (scratch_13).("Compare") = scratch_6 (scratch_13).("Dispose") = scratch_9 Utils = scratch_13 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `objectVar`12(scratch_0) (scratch_1).("Before") = 0.0 (scratch_1).("Running") = 1.0 (scratch_1).("After") = 2.0 State = scratch_1 scratch_0 = newfun (3.0) (`self`14, arguments) => decl initialize = arguments ⌜⋆⌝ "0", tryGetNext = arguments ⌜⋆⌝ "1", dispose = arguments ⌜⋆⌝ "2", state = undef, yielder = undef in scratch (4) in :RETURN:: if isprim Yielder throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new Yielder(scratch_0) merge merge yielder = scratch_1 scratch_0 = toObj State state = scratch_0 ⌜⋆⌝ "Before" scratch_0 = toObj `self`14 scratch_1 = toObj yielder (scratch_0).("Current") = scratch_1 ⌜⋆⌝ "Current" scratch_0 = toObj `self`14 scratch_1 = newfun (0.0) (`self`14, arguments) => decl t`3 = undef, `tempPVar`138 = undef, `tempPVar`139 = undef in scratch (3) in :RETURN:: try :BREAK:: `tempPVar`138 = state `tempPVar`139 = false scratch_0 = toObj State if scratch_0 ⌜⋆⌝ "Before" ⌜≡⌝ `tempPVar`138 ⌜||⌝ `tempPVar`139 scratch_0 = toObj State state = scratch_0 ⌜⋆⌝ "Running" scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = initialize(`window`0, scratch_0) merge `tempPVar`139 = true else `dummy`2 = undef merge scratch_0 = toObj State if scratch_0 ⌜⋆⌝ "Running" ⌜≡⌝ `tempPVar`138 ⌜||⌝ `tempPVar`139 scratch_0 = toObj tryGetNext scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = yielder (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "apply"(scratch_0, scratch_1) merge if tobool scratch_2 jmp :RETURN: true else scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge jmp :RETURN: false merge `tempPVar`139 = true else `dummy`2 = undef merge scratch_0 = toObj State if scratch_0 ⌜⋆⌝ "After" ⌜≡⌝ `tempPVar`138 ⌜||⌝ `tempPVar`139 jmp :RETURN: false jmp :BREAK: undef `tempPVar`139 = true else `dummy`2 = undef merge merge catch t`3 merge scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Dispose"(scratch_0, scratch_1) merge throw t`3 finally merge scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("MoveNext") = scratch_1 scratch_0 = toObj `self`14 scratch_1 = newfun (0.0) (`self`14, arguments) => decl `tempPVar`144 = undef in scratch (2) in :RETURN:: scratch_0 = toObj State if ⌞¬⌟ state ⌜≈⌝ scratch_0 ⌜⋆⌝ "Running" jmp :RETURN: undef else `dummy`2 = undef merge try scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = dispose(`window`0, scratch_0) merge catch `tempPVar`144 merge throw `tempPVar`144 finally merge scratch_0 = toObj State state = scratch_0 ⌜⋆⌝ "After" scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("Dispose") = scratch_1 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 IEnumerator = scratch_0 scratch_0 = newfun (0.0) (`self`14, arguments) => decl current = undef in scratch (4) in :RETURN:: current = null scratch_0 = toObj `self`14 scratch_1 = newfun (0.0) (`self`14, arguments) => :RETURN:: jmp :RETURN: current scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("Current") = scratch_1 scratch_0 = toObj `self`14 scratch_1 = newfun (1.0) (`self`14, arguments) => decl value = arguments ⌜⋆⌝ "0" in :RETURN:: current = value jmp :RETURN: true scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("Yield") = scratch_1 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 Yielder = scratch_0 scratch_0 = newfun (4.0) (`self`14, arguments) => decl source = arguments ⌜⋆⌝ "0", keySelector = arguments ⌜⋆⌝ "1", descending = arguments ⌜⋆⌝ "2", parent = arguments ⌜⋆⌝ "3" in scratch (4) in :RETURN:: scratch_0 = toObj `self`14 (scratch_0).("source") = source scratch_0 = toObj `self`14 scratch_1 = toObj Utils scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = keySelector (scratch_2).("length") = 1.0 scratch_3 = scratch_1 ⌜⋆⌝ "CreateLambda"(scratch_1, scratch_2) merge (scratch_0).("keySelector") = scratch_3 scratch_0 = toObj `self`14 (scratch_0).("descending") = descending scratch_0 = toObj `self`14 (scratch_0).("parent") = parent 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 OrderedEnumerable = scratch_0 scratch_0 = toObj OrderedEnumerable if isprim Enumerable throw "TypeError" else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = new Enumerable(scratch_1) merge merge (scratch_0).("prototype") = scratch_2 scratch_0 = toObj OrderedEnumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (2.0) (`self`14, arguments) => decl keySelector = arguments ⌜⋆⌝ "0", descending = arguments ⌜⋆⌝ "1" in scratch (3) in :RETURN:: scratch_0 = toObj `self`14 if isprim OrderedEnumerable throw "TypeError" else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = scratch_0 ⌜⋆⌝ "source" (scratch_1).("1") = keySelector (scratch_1).("2") = descending (scratch_1).("3") = `self`14 (scratch_1).("length") = 4.0 scratch_2 = new OrderedEnumerable(scratch_1) merge merge jmp :RETURN: scratch_2 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("CreateOrderedEnumerable") = scratch_2 scratch_0 = toObj OrderedEnumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (1.0) (`self`14, arguments) => decl keySelector = arguments ⌜⋆⌝ "0" in scratch (3) in :RETURN:: scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = keySelector (scratch_1).("1") = false (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateOrderedEnumerable"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("ThenBy") = scratch_2 scratch_0 = toObj OrderedEnumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (1.0) (`self`14, arguments) => decl keySelector = arguments ⌜⋆⌝ "0" in scratch (3) in :RETURN:: scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = keySelector (scratch_1).("1") = true (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "CreateOrderedEnumerable"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("ThenByDescending") = scratch_2 scratch_0 = toObj OrderedEnumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (0.0) (`self`14, arguments) => decl index = undef, indexes = undef, buffer = undef, self = undef in scratch (9) in :RETURN:: self = `self`14 index = 0.0 scratch_0 = newfun (0.0) (`self`14, arguments) => decl sortContext = undef in scratch (7) in :RETURN:: scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("length") = 0.0 buffer = scratch_1 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("length") = 0.0 indexes = scratch_1 scratch_0 = toObj self scratch_1 = newfun (2.0) (`self`14, arguments) => decl item = arguments ⌜⋆⌝ "0", index = arguments ⌜⋆⌝ "1" in scratch (3) in :RETURN:: scratch_0 = toObj buffer scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = item (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "push"(scratch_0, scratch_1) merge scratch_0 = toObj indexes scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = index (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "push"(scratch_0, scratch_1) merge scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 scratch_4 = toObj scratch_0 ⌜⋆⌝ "source" scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_1 (scratch_5).("length") = 1.0 scratch_6 = scratch_4 ⌜⋆⌝ "ForEach"(scratch_4, scratch_5) merge scratch_0 = toObj SortContext scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = self (scratch_1).("1") = null (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "Create"(scratch_0, scratch_1) merge sortContext = scratch_2 scratch_0 = toObj sortContext scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = buffer (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "GenerateKeys"(scratch_0, scratch_1) merge scratch_0 = newfun (2.0) (`self`14, arguments) => decl a = arguments ⌜⋆⌝ "0", b = arguments ⌜⋆⌝ "1" in scratch (3) in :RETURN:: scratch_0 = toObj sortContext scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = a (scratch_1).("1") = b (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "Compare"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 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 scratch_3 = toObj indexes scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "sort"(scratch_3, scratch_4) merge 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (19) in :RETURN:: scratch_0 = toObj indexes if typeof index ⌜≡⌝ "string" ⌜&&⌝ typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_1 = index ⌜≺⌝ scratch_0 ⌜⋆⌝ "length" else if isprim index scratch_2 = tonum index else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = index (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim scratch_0 ⌜⋆⌝ "length" scratch_4 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_1 = scratch_2 ⌜<⌝ scratch_4 merge if tobool scratch_1 if isprim index scratch_6 = tonum index else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = index (scratch_7).("length") = 1.0 scratch_6 = `numberVar`8(`window`0, scratch_7) merge merge scratch_8 = scratch_6 index = scratch_8 ⌜+⌝ 1.0 scratch_9 = toObj indexes if isprim scratch_8 scratch_10 = tostr scratch_8 else scratch_11 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_11).("length") = 0.0 scratch_10 = scratch_8 ⌜⋆⌝ "toString"(scratch_8, scratch_11) merge merge scratch_12 = toObj buffer if isprim scratch_9 ⌜⋆⌝ scratch_10 scratch_13 = tostr scratch_9 ⌜⋆⌝ scratch_10 else scratch_14 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_14).("length") = 0.0 scratch_13 = scratch_9 ⌜⋆⌝ scratch_10 ⌜⋆⌝ "toString"(scratch_9 ⌜⋆⌝ scratch_10, scratch_14) merge merge scratch_15 = toObj `self`14 scratch_16 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_16).("0") = scratch_12 ⌜⋆⌝ scratch_13 (scratch_16).("length") = 1.0 scratch_17 = scratch_15 ⌜⋆⌝ "Yield"(scratch_15, scratch_16) merge scratch_18 = scratch_17 else scratch_18 = false merge jmp :RETURN: scratch_18 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_0 (scratch_7).("1") = scratch_3 (scratch_7).("2") = scratch_6 ⌜⋆⌝ "Blank" (scratch_7).("length") = 3.0 scratch_8 = new IEnumerator(scratch_7) merge merge jmp :RETURN: scratch_8 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("GetEnumerator") = scratch_2 scratch_0 = newfun (3.0) (`self`14, arguments) => decl keySelector = arguments ⌜⋆⌝ "0", descending = arguments ⌜⋆⌝ "1", child = arguments ⌜⋆⌝ "2" in scratch (1) in :RETURN:: scratch_0 = toObj `self`14 (scratch_0).("keySelector") = keySelector scratch_0 = toObj `self`14 (scratch_0).("descending") = descending scratch_0 = toObj `self`14 (scratch_0).("child") = child scratch_0 = toObj `self`14 (scratch_0).("keys") = null 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 SortContext = scratch_0 scratch_0 = toObj SortContext scratch_1 = newfun (2.0) (`self`14, arguments) => decl orderedEnumerable = arguments ⌜⋆⌝ "0", currentContext = arguments ⌜⋆⌝ "1", context = undef in scratch (5) in :RETURN:: scratch_0 = toObj orderedEnumerable scratch_1 = toObj orderedEnumerable if isprim SortContext throw "TypeError" else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = scratch_0 ⌜⋆⌝ "keySelector" (scratch_2).("1") = scratch_1 ⌜⋆⌝ "descending" (scratch_2).("2") = currentContext (scratch_2).("length") = 3.0 scratch_3 = new SortContext(scratch_2) merge merge context = scratch_3 scratch_0 = toObj orderedEnumerable if ⌞¬⌟ scratch_0 ⌜⋆⌝ "parent" ⌜≈⌝ null scratch_1 = toObj orderedEnumerable scratch_2 = toObj SortContext scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_1 ⌜⋆⌝ "parent" (scratch_3).("1") = context (scratch_3).("length") = 2.0 scratch_4 = scratch_2 ⌜⋆⌝ "Create"(scratch_2, scratch_3) merge jmp :RETURN: scratch_4 else `dummy`2 = undef merge jmp :RETURN: context scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("Create") = scratch_1 scratch_0 = toObj SortContext scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (1.0) (`self`14, arguments) => decl source = arguments ⌜⋆⌝ "0", i = undef, keys = undef, keySelector = undef, len = undef in scratch (17) in :RETURN:: scratch_0 = toObj source len = scratch_0 ⌜⋆⌝ "length" scratch_0 = toObj `self`14 keySelector = scratch_0 ⌜⋆⌝ "keySelector" if isprim `window`0 ⌜⋆⌝ "Array" throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = len (scratch_0).("length") = 1.0 scratch_1 = new `window`0 ⌜⋆⌝ "Array"(scratch_0) merge merge keys = scratch_1 :BREAK:: i = 0.0 if typeof i ⌜≡⌝ "string" ⌜&&⌝ typeof len ⌜≡⌝ "string" scratch_0 = i ⌜≺⌝ len else if isprim i scratch_1 = tonum i else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = i (scratch_2).("length") = 1.0 scratch_1 = `numberVar`8(`window`0, scratch_2) merge merge if isprim len scratch_3 = tonum len else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = len (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge scratch_0 = scratch_1 ⌜<⌝ scratch_3 merge scratch_5 = tobool scratch_0 while scratch_5 merge :CONTINUE:: scratch_6 = toObj keys if isprim i scratch_7 = tostr i else scratch_8 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_8).("length") = 0.0 scratch_7 = i ⌜⋆⌝ "toString"(i, scratch_8) merge merge scratch_9 = toObj source if isprim i scratch_10 = tostr i else scratch_11 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_11).("length") = 0.0 scratch_10 = i ⌜⋆⌝ "toString"(i, scratch_11) merge merge scratch_12 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_12).("0") = scratch_9 ⌜⋆⌝ scratch_10 (scratch_12).("length") = 1.0 scratch_13 = keySelector(`window`0, scratch_12) merge (scratch_6).(scratch_7) = scratch_13 merge if isprim i scratch_14 = tonum i else scratch_15 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_15).("0") = i (scratch_15).("length") = 1.0 scratch_14 = `numberVar`8(`window`0, scratch_15) merge merge scratch_16 = scratch_14 i = scratch_16 ⌜+⌝ 1.0 if typeof i ⌜≡⌝ "string" ⌜&&⌝ typeof len ⌜≡⌝ "string" scratch_0 = i ⌜≺⌝ len else if isprim i scratch_1 = tonum i else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = i (scratch_2).("length") = 1.0 scratch_1 = `numberVar`8(`window`0, scratch_2) merge merge if isprim len scratch_3 = tonum len else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = len (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge scratch_0 = scratch_1 ⌜<⌝ scratch_3 merge scratch_5 = tobool scratch_0 merge merge scratch_0 = toObj `self`14 (scratch_0).("keys") = keys scratch_0 = toObj `self`14 if ⌞¬⌟ scratch_0 ⌜⋆⌝ "child" ⌜≈⌝ null scratch_1 = toObj `self`14 scratch_2 = toObj scratch_1 ⌜⋆⌝ "child" scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = source (scratch_3).("length") = 1.0 scratch_4 = scratch_2 ⌜⋆⌝ "GenerateKeys"(scratch_2, scratch_3) merge else `dummy`2 = undef merge scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("GenerateKeys") = scratch_2 scratch_0 = toObj SortContext scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (2.0) (`self`14, arguments) => decl index1 = arguments ⌜⋆⌝ "0", index2 = arguments ⌜⋆⌝ "1", comparison = undef in scratch (11) in :RETURN:: scratch_0 = toObj `self`14 scratch_1 = toObj scratch_0 ⌜⋆⌝ "keys" if isprim index1 scratch_2 = tostr index1 else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_2 = index1 ⌜⋆⌝ "toString"(index1, scratch_3) merge merge scratch_4 = toObj `self`14 scratch_5 = toObj scratch_4 ⌜⋆⌝ "keys" if isprim index2 scratch_6 = tostr index2 else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_6 = index2 ⌜⋆⌝ "toString"(index2, scratch_7) merge merge scratch_8 = toObj Utils scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_1 ⌜⋆⌝ scratch_2 (scratch_9).("1") = scratch_5 ⌜⋆⌝ scratch_6 (scratch_9).("length") = 2.0 scratch_10 = scratch_8 ⌜⋆⌝ "Compare"(scratch_8, scratch_9) merge comparison = scratch_10 if comparison ⌜≈⌝ 0.0 scratch_0 = toObj `self`14 if ⌞¬⌟ scratch_0 ⌜⋆⌝ "child" ⌜≈⌝ null scratch_1 = toObj `self`14 scratch_2 = toObj scratch_1 ⌜⋆⌝ "child" scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = index1 (scratch_3).("1") = index2 (scratch_3).("length") = 2.0 scratch_4 = scratch_2 ⌜⋆⌝ "Compare"(scratch_2, scratch_3) merge jmp :RETURN: scratch_4 else `dummy`2 = undef merge scratch_0 = toObj Utils scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = index1 (scratch_1).("1") = index2 (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "Compare"(scratch_0, scratch_1) merge comparison = scratch_2 else `dummy`2 = undef merge scratch_0 = toObj `self`14 if tobool scratch_0 ⌜⋆⌝ "descending" if isprim comparison scratch_1 = tonum comparison else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = comparison (scratch_2).("length") = 1.0 scratch_1 = `numberVar`8(`window`0, scratch_2) merge merge scratch_3 = ⌞−⌟ scratch_1 else scratch_3 = comparison merge jmp :RETURN: scratch_3 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("Compare") = scratch_2 scratch_0 = newfun (1.0) (`self`14, arguments) => decl source = arguments ⌜⋆⌝ "0" in scratch (1) in :RETURN:: scratch_0 = toObj `self`14 (scratch_0).("source") = source 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 ArrayEnumerable = scratch_0 scratch_0 = toObj ArrayEnumerable if isprim Enumerable throw "TypeError" else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = new Enumerable(scratch_1) merge merge (scratch_0).("prototype") = scratch_2 scratch_0 = toObj ArrayEnumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (1.0) (`self`14, arguments) => decl predicate = arguments ⌜⋆⌝ "0" in scratch (11) in :RETURN:: if predicate ⌜≈⌝ null scratch_0 = toObj `self`14 scratch_1 = toObj scratch_0 ⌜⋆⌝ "source" if false ⌜&&⌝ typeof scratch_1 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_2 = 0.0 ⌜≺⌝ scratch_1 ⌜⋆⌝ "length" else if isprim scratch_1 ⌜⋆⌝ "length" scratch_3 = tonum scratch_1 ⌜⋆⌝ "length" else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_1 ⌜⋆⌝ "length" (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge scratch_2 = 0.0 ⌜<⌝ scratch_3 merge scratch_5 = scratch_2 else scratch_6 = toObj Enumerable scratch_7 = toObj scratch_6 ⌜⋆⌝ "prototype" scratch_8 = toObj scratch_7 ⌜⋆⌝ "Any" scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = `self`14 (scratch_9).("1") = arguments (scratch_9).("length") = 2.0 scratch_10 = scratch_8 ⌜⋆⌝ "apply"(scratch_8, scratch_9) merge scratch_5 = scratch_10 merge jmp :RETURN: scratch_5 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("Any") = scratch_2 scratch_0 = toObj ArrayEnumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (1.0) (`self`14, arguments) => decl predicate = arguments ⌜⋆⌝ "0" in scratch (8) in :RETURN:: if predicate ⌜≈⌝ null scratch_0 = toObj `self`14 scratch_1 = toObj scratch_0 ⌜⋆⌝ "source" scratch_2 = scratch_1 ⌜⋆⌝ "length" else scratch_3 = toObj Enumerable scratch_4 = toObj scratch_3 ⌜⋆⌝ "prototype" scratch_5 = toObj scratch_4 ⌜⋆⌝ "Count" scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = `self`14 (scratch_6).("1") = arguments (scratch_6).("length") = 2.0 scratch_7 = scratch_5 ⌜⋆⌝ "apply"(scratch_5, scratch_6) merge scratch_2 = scratch_7 merge jmp :RETURN: scratch_2 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("Count") = scratch_2 scratch_0 = toObj ArrayEnumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (1.0) (`self`14, arguments) => decl index = arguments ⌜⋆⌝ "0" in scratch (21) in :RETURN:: if false ⌜&&⌝ typeof index ⌜≡⌝ "string" scratch_0 = 0.0 ⌜≼⌝ index else if isprim index scratch_1 = tonum index else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = index (scratch_2).("length") = 1.0 scratch_1 = `numberVar`8(`window`0, scratch_2) merge merge scratch_0 = 0.0 ⌜≤⌝ scratch_1 merge if tobool scratch_0 ⌜≡⌝ true scratch_3 = toObj `self`14 scratch_4 = toObj scratch_3 ⌜⋆⌝ "source" if typeof index ⌜≡⌝ "string" ⌜&&⌝ typeof scratch_4 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_5 = index ⌜≺⌝ scratch_4 ⌜⋆⌝ "length" else if isprim index scratch_6 = tonum index else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = index (scratch_7).("length") = 1.0 scratch_6 = `numberVar`8(`window`0, scratch_7) merge merge if isprim scratch_4 ⌜⋆⌝ "length" scratch_8 = tonum scratch_4 ⌜⋆⌝ "length" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_4 ⌜⋆⌝ "length" (scratch_9).("length") = 1.0 scratch_8 = `numberVar`8(`window`0, scratch_9) merge merge scratch_5 = scratch_6 ⌜<⌝ scratch_8 merge scratch_10 = scratch_5 else scratch_10 = scratch_0 merge if tobool scratch_10 scratch_11 = toObj `self`14 scratch_12 = toObj scratch_11 ⌜⋆⌝ "source" if isprim index scratch_13 = tostr index else scratch_14 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_14).("length") = 0.0 scratch_13 = index ⌜⋆⌝ "toString"(index, scratch_14) merge merge scratch_15 = scratch_12 ⌜⋆⌝ scratch_13 else scratch_16 = toObj Enumerable scratch_17 = toObj scratch_16 ⌜⋆⌝ "prototype" scratch_18 = toObj scratch_17 ⌜⋆⌝ "ElementAt" scratch_19 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_19).("0") = `self`14 (scratch_19).("1") = arguments (scratch_19).("length") = 2.0 scratch_20 = scratch_18 ⌜⋆⌝ "apply"(scratch_18, scratch_19) merge scratch_15 = scratch_20 merge jmp :RETURN: scratch_15 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("ElementAt") = scratch_2 scratch_0 = toObj ArrayEnumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (2.0) (`self`14, arguments) => decl index = arguments ⌜⋆⌝ "0", defaultValue = arguments ⌜⋆⌝ "1" in scratch (16) in :RETURN:: if false ⌜&&⌝ typeof index ⌜≡⌝ "string" scratch_0 = 0.0 ⌜≼⌝ index else if isprim index scratch_1 = tonum index else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = index (scratch_2).("length") = 1.0 scratch_1 = `numberVar`8(`window`0, scratch_2) merge merge scratch_0 = 0.0 ⌜≤⌝ scratch_1 merge if tobool scratch_0 ⌜≡⌝ true scratch_3 = toObj `self`14 scratch_4 = toObj scratch_3 ⌜⋆⌝ "source" if typeof index ⌜≡⌝ "string" ⌜&&⌝ typeof scratch_4 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_5 = index ⌜≺⌝ scratch_4 ⌜⋆⌝ "length" else if isprim index scratch_6 = tonum index else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = index (scratch_7).("length") = 1.0 scratch_6 = `numberVar`8(`window`0, scratch_7) merge merge if isprim scratch_4 ⌜⋆⌝ "length" scratch_8 = tonum scratch_4 ⌜⋆⌝ "length" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_4 ⌜⋆⌝ "length" (scratch_9).("length") = 1.0 scratch_8 = `numberVar`8(`window`0, scratch_9) merge merge scratch_5 = scratch_6 ⌜<⌝ scratch_8 merge scratch_10 = scratch_5 else scratch_10 = scratch_0 merge if tobool scratch_10 scratch_11 = toObj `self`14 scratch_12 = toObj scratch_11 ⌜⋆⌝ "source" if isprim index scratch_13 = tostr index else scratch_14 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_14).("length") = 0.0 scratch_13 = index ⌜⋆⌝ "toString"(index, scratch_14) merge merge scratch_15 = scratch_12 ⌜⋆⌝ scratch_13 else scratch_15 = defaultValue merge jmp :RETURN: scratch_15 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("ElementAtOrDefault") = scratch_2 scratch_0 = toObj ArrayEnumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (1.0) (`self`14, arguments) => decl predicate = arguments ⌜⋆⌝ "0" in scratch (14) in :RETURN:: if predicate ⌜≈⌝ null ⌜≡⌝ true scratch_0 = toObj `self`14 scratch_1 = toObj scratch_0 ⌜⋆⌝ "source" if false ⌜&&⌝ typeof scratch_1 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_2 = 0.0 ⌜≺⌝ scratch_1 ⌜⋆⌝ "length" else if isprim scratch_1 ⌜⋆⌝ "length" scratch_3 = tonum scratch_1 ⌜⋆⌝ "length" else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_1 ⌜⋆⌝ "length" (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge scratch_2 = 0.0 ⌜<⌝ scratch_3 merge scratch_5 = scratch_2 else scratch_5 = predicate ⌜≈⌝ null merge if tobool scratch_5 scratch_6 = toObj `self`14 scratch_7 = toObj scratch_6 ⌜⋆⌝ "source" scratch_8 = scratch_7 ⌜⋆⌝ tostr 0.0 else scratch_9 = toObj Enumerable scratch_10 = toObj scratch_9 ⌜⋆⌝ "prototype" scratch_11 = toObj scratch_10 ⌜⋆⌝ "First" scratch_12 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_12).("0") = `self`14 (scratch_12).("1") = arguments (scratch_12).("length") = 2.0 scratch_13 = scratch_11 ⌜⋆⌝ "apply"(scratch_11, scratch_12) merge scratch_8 = scratch_13 merge jmp :RETURN: scratch_8 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("First") = scratch_2 scratch_0 = toObj ArrayEnumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (2.0) (`self`14, arguments) => decl defaultValue = arguments ⌜⋆⌝ "0", predicate = arguments ⌜⋆⌝ "1" in scratch (8) in :RETURN:: if ⌞¬⌟ predicate ⌜≈⌝ null scratch_0 = toObj Enumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = toObj scratch_1 ⌜⋆⌝ "FirstOrDefault" scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = `self`14 (scratch_3).("1") = arguments (scratch_3).("length") = 2.0 scratch_4 = scratch_2 ⌜⋆⌝ "apply"(scratch_2, scratch_3) merge jmp :RETURN: scratch_4 else `dummy`2 = undef merge scratch_0 = toObj `self`14 scratch_1 = toObj scratch_0 ⌜⋆⌝ "source" if false ⌜&&⌝ typeof scratch_1 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_2 = 0.0 ⌜≺⌝ scratch_1 ⌜⋆⌝ "length" else if isprim scratch_1 ⌜⋆⌝ "length" scratch_3 = tonum scratch_1 ⌜⋆⌝ "length" else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_1 ⌜⋆⌝ "length" (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge scratch_2 = 0.0 ⌜<⌝ scratch_3 merge if tobool scratch_2 scratch_5 = toObj `self`14 scratch_6 = toObj scratch_5 ⌜⋆⌝ "source" scratch_7 = scratch_6 ⌜⋆⌝ tostr 0.0 else scratch_7 = defaultValue merge jmp :RETURN: scratch_7 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("FirstOrDefault") = scratch_2 scratch_0 = toObj ArrayEnumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (1.0) (`self`14, arguments) => decl predicate = arguments ⌜⋆⌝ "0" in scratch (18) in :RETURN:: if predicate ⌜≈⌝ null ⌜≡⌝ true scratch_0 = toObj `self`14 scratch_1 = toObj scratch_0 ⌜⋆⌝ "source" if false ⌜&&⌝ typeof scratch_1 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_2 = 0.0 ⌜≺⌝ scratch_1 ⌜⋆⌝ "length" else if isprim scratch_1 ⌜⋆⌝ "length" scratch_3 = tonum scratch_1 ⌜⋆⌝ "length" else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_1 ⌜⋆⌝ "length" (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge scratch_2 = 0.0 ⌜<⌝ scratch_3 merge scratch_5 = scratch_2 else scratch_5 = predicate ⌜≈⌝ null merge if tobool scratch_5 scratch_6 = toObj `self`14 scratch_7 = toObj `self`14 scratch_8 = toObj scratch_7 ⌜⋆⌝ "source" if isprim scratch_8 ⌜⋆⌝ "length" scratch_9 = tonum scratch_8 ⌜⋆⌝ "length" else scratch_10 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_10).("0") = scratch_8 ⌜⋆⌝ "length" (scratch_10).("length") = 1.0 scratch_9 = `numberVar`8(`window`0, scratch_10) merge merge scratch_11 = toObj scratch_6 ⌜⋆⌝ "source" scratch_12 = scratch_11 ⌜⋆⌝ tostr scratch_9 ⌜−⌝ 1.0 else scratch_13 = toObj Enumerable scratch_14 = toObj scratch_13 ⌜⋆⌝ "prototype" scratch_15 = toObj scratch_14 ⌜⋆⌝ "Last" scratch_16 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_16).("0") = `self`14 (scratch_16).("1") = arguments (scratch_16).("length") = 2.0 scratch_17 = scratch_15 ⌜⋆⌝ "apply"(scratch_15, scratch_16) merge scratch_12 = scratch_17 merge jmp :RETURN: scratch_12 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("Last") = scratch_2 scratch_0 = toObj ArrayEnumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (2.0) (`self`14, arguments) => decl defaultValue = arguments ⌜⋆⌝ "0", predicate = arguments ⌜⋆⌝ "1" in scratch (12) in :RETURN:: if ⌞¬⌟ predicate ⌜≈⌝ null scratch_0 = toObj Enumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = toObj scratch_1 ⌜⋆⌝ "LastOrDefault" scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = `self`14 (scratch_3).("1") = arguments (scratch_3).("length") = 2.0 scratch_4 = scratch_2 ⌜⋆⌝ "apply"(scratch_2, scratch_3) merge jmp :RETURN: scratch_4 else `dummy`2 = undef merge scratch_0 = toObj `self`14 scratch_1 = toObj scratch_0 ⌜⋆⌝ "source" if false ⌜&&⌝ typeof scratch_1 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_2 = 0.0 ⌜≺⌝ scratch_1 ⌜⋆⌝ "length" else if isprim scratch_1 ⌜⋆⌝ "length" scratch_3 = tonum scratch_1 ⌜⋆⌝ "length" else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_1 ⌜⋆⌝ "length" (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge scratch_2 = 0.0 ⌜<⌝ scratch_3 merge if tobool scratch_2 scratch_5 = toObj `self`14 scratch_6 = toObj `self`14 scratch_7 = toObj scratch_6 ⌜⋆⌝ "source" if isprim scratch_7 ⌜⋆⌝ "length" scratch_8 = tonum scratch_7 ⌜⋆⌝ "length" else scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_7 ⌜⋆⌝ "length" (scratch_9).("length") = 1.0 scratch_8 = `numberVar`8(`window`0, scratch_9) merge merge scratch_10 = toObj scratch_5 ⌜⋆⌝ "source" scratch_11 = scratch_10 ⌜⋆⌝ tostr scratch_8 ⌜−⌝ 1.0 else scratch_11 = defaultValue merge jmp :RETURN: scratch_11 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("LastOrDefault") = scratch_2 scratch_0 = toObj ArrayEnumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (1.0) (`self`14, arguments) => decl count = arguments ⌜⋆⌝ "0", source = undef in scratch (5) in :RETURN:: scratch_0 = toObj `self`14 source = scratch_0 ⌜⋆⌝ "source" scratch_0 = newfun (0.0) (`self`14, arguments) => decl index = undef in scratch (9) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (4) in :RETURN:: if typeof count ⌜≡⌝ "string" ⌜&&⌝ false scratch_0 = count ⌜≺⌝ 0.0 else if isprim count scratch_1 = tonum count else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = count (scratch_2).("length") = 1.0 scratch_1 = `numberVar`8(`window`0, scratch_2) merge merge scratch_0 = scratch_1 ⌜<⌝ 0.0 merge if tobool scratch_0 scratch_3 = 0.0 else scratch_3 = count merge index = scratch_3 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (16) in :RETURN:: scratch_0 = toObj source if typeof index ⌜≡⌝ "string" ⌜&&⌝ typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_1 = index ⌜≺⌝ scratch_0 ⌜⋆⌝ "length" else if isprim index scratch_2 = tonum index else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = index (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim scratch_0 ⌜⋆⌝ "length" scratch_4 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_1 = scratch_2 ⌜<⌝ scratch_4 merge if tobool scratch_1 if isprim index scratch_6 = tonum index else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = index (scratch_7).("length") = 1.0 scratch_6 = `numberVar`8(`window`0, scratch_7) merge merge scratch_8 = scratch_6 index = scratch_8 ⌜+⌝ 1.0 scratch_9 = toObj source if isprim scratch_8 scratch_10 = tostr scratch_8 else scratch_11 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_11).("length") = 0.0 scratch_10 = scratch_8 ⌜⋆⌝ "toString"(scratch_8, scratch_11) merge merge scratch_12 = toObj `self`14 scratch_13 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_13).("0") = scratch_9 ⌜⋆⌝ scratch_10 (scratch_13).("length") = 1.0 scratch_14 = scratch_12 ⌜⋆⌝ "Yield"(scratch_12, scratch_13) merge scratch_15 = scratch_14 else scratch_15 = false merge jmp :RETURN: scratch_15 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_0 (scratch_7).("1") = scratch_3 (scratch_7).("2") = scratch_6 ⌜⋆⌝ "Blank" (scratch_7).("length") = 3.0 scratch_8 = new IEnumerator(scratch_7) merge merge jmp :RETURN: scratch_8 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("Skip") = scratch_2 scratch_0 = toObj ArrayEnumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (1.0) (`self`14, arguments) => decl count = arguments ⌜⋆⌝ "0" in scratch (9) in :RETURN:: if count ⌜≈⌝ null count = 1.0 else `dummy`2 = undef merge scratch_0 = toObj `self`14 scratch_1 = toObj scratch_0 ⌜⋆⌝ "source" if isprim scratch_1 ⌜⋆⌝ "length" scratch_2 = tonum scratch_1 ⌜⋆⌝ "length" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_1 ⌜⋆⌝ "length" (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim count scratch_4 = tonum count else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = count (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_6 = toObj `self`14 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_2 ⌜−⌝ scratch_4 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "Take"(scratch_6, scratch_7) merge jmp :RETURN: scratch_8 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("TakeExceptLast") = scratch_2 scratch_0 = toObj ArrayEnumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (1.0) (`self`14, arguments) => decl count = arguments ⌜⋆⌝ "0" in scratch (9) in :RETURN:: scratch_0 = toObj `self`14 scratch_1 = toObj scratch_0 ⌜⋆⌝ "source" if isprim scratch_1 ⌜⋆⌝ "length" scratch_2 = tonum scratch_1 ⌜⋆⌝ "length" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_1 ⌜⋆⌝ "length" (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim count scratch_4 = tonum count else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = count (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_6 = toObj `self`14 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_2 ⌜−⌝ scratch_4 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "Skip"(scratch_6, scratch_7) merge jmp :RETURN: scratch_8 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("TakeFromLast") = scratch_2 scratch_0 = toObj ArrayEnumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (0.0) (`self`14, arguments) => decl source = undef in scratch (5) in :RETURN:: scratch_0 = toObj `self`14 source = scratch_0 ⌜⋆⌝ "source" scratch_0 = newfun (0.0) (`self`14, arguments) => decl index = undef in scratch (9) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (1) in :RETURN:: scratch_0 = toObj source index = scratch_0 ⌜⋆⌝ "length" 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 scratch_3 = newfun (0.0) (`self`14, arguments) => scratch (12) in :RETURN:: if false ⌜&&⌝ typeof index ⌜≡⌝ "string" scratch_0 = 0.0 ⌜≺⌝ index else if isprim index scratch_1 = tonum index else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = index (scratch_2).("length") = 1.0 scratch_1 = `numberVar`8(`window`0, scratch_2) merge merge scratch_0 = 0.0 ⌜<⌝ scratch_1 merge if tobool scratch_0 if isprim index scratch_3 = tonum index else scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = index (scratch_4).("length") = 1.0 scratch_3 = `numberVar`8(`window`0, scratch_4) merge merge index = scratch_3 ⌜+⌝ -1.0 scratch_5 = toObj source if isprim index scratch_6 = tostr index else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_6 = index ⌜⋆⌝ "toString"(index, scratch_7) merge merge scratch_8 = toObj `self`14 scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = scratch_5 ⌜⋆⌝ scratch_6 (scratch_9).("length") = 1.0 scratch_10 = scratch_8 ⌜⋆⌝ "Yield"(scratch_8, scratch_9) merge scratch_11 = scratch_10 else scratch_11 = false merge jmp :RETURN: scratch_11 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_0 (scratch_7).("1") = scratch_3 (scratch_7).("2") = scratch_6 ⌜⋆⌝ "Blank" (scratch_7).("length") = 3.0 scratch_8 = new IEnumerator(scratch_7) merge merge jmp :RETURN: scratch_8 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("Reverse") = scratch_2 scratch_0 = toObj ArrayEnumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (2.0) (`self`14, arguments) => decl second = arguments ⌜⋆⌝ "0", compareSelector = arguments ⌜⋆⌝ "1" in scratch (12) in :RETURN:: if ⌞¬⌟ typeof ArrayEnumerable ⌜≡⌝ "function" throw "TypeError" else `dummy`2 = undef merge if second instanceof ArrayEnumerable ⌜⋆⌝ "prototype" ⌜≡⌝ false if ⌞¬⌟ typeof `window`0 ⌜⋆⌝ "Array" ⌜≡⌝ "function" throw "TypeError" else `dummy`2 = undef merge scratch_0 = second instanceof `window`0 ⌜⋆⌝ "Array" ⌜⋆⌝ "prototype" else scratch_0 = second instanceof ArrayEnumerable ⌜⋆⌝ "prototype" merge if tobool scratch_0 ⌜≡⌝ true if compareSelector ⌜≈⌝ null ⌜≡⌝ true scratch_1 = toObj Enumerable scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = second (scratch_2).("length") = 1.0 scratch_3 = scratch_1 ⌜⋆⌝ "From"(scratch_1, scratch_2) merge scratch_4 = toObj scratch_3 scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("length") = 0.0 scratch_6 = scratch_4 ⌜⋆⌝ "Count"(scratch_4, scratch_5) merge scratch_7 = toObj `self`14 scratch_8 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_8).("length") = 0.0 scratch_9 = scratch_7 ⌜⋆⌝ "Count"(scratch_7, scratch_8) merge scratch_10 = ⌞¬⌟ scratch_6 ⌜≈⌝ scratch_9 else scratch_10 = compareSelector ⌜≈⌝ null merge scratch_11 = scratch_10 else scratch_11 = scratch_0 merge if tobool scratch_11 jmp :RETURN: false else `dummy`2 = undef merge scratch_0 = toObj Enumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = toObj scratch_1 ⌜⋆⌝ "SequenceEqual" scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = `self`14 (scratch_3).("1") = arguments (scratch_3).("length") = 2.0 scratch_4 = scratch_2 ⌜⋆⌝ "apply"(scratch_2, scratch_3) merge jmp :RETURN: scratch_4 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("SequenceEqual") = scratch_2 scratch_0 = toObj ArrayEnumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (2.0) (`self`14, arguments) => decl separator = arguments ⌜⋆⌝ "0", selector = arguments ⌜⋆⌝ "1" in scratch (5) in :RETURN:: if ⌞¬⌟ selector ⌜≈⌝ null ⌜≡⌝ false scratch_0 = toObj `self`14 if ⌞¬⌟ typeof `window`0 ⌜⋆⌝ "Array" ⌜≡⌝ "function" throw "TypeError" else `dummy`2 = undef merge scratch_1 = ⌞¬⌟ scratch_0 ⌜⋆⌝ "source" instanceof `window`0 ⌜⋆⌝ "Array" ⌜⋆⌝ "prototype" else scratch_1 = ⌞¬⌟ selector ⌜≈⌝ null merge if tobool scratch_1 scratch_0 = toObj Enumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = toObj scratch_1 ⌜⋆⌝ "ToString" scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = `self`14 (scratch_3).("1") = arguments (scratch_3).("length") = 2.0 scratch_4 = scratch_2 ⌜⋆⌝ "apply"(scratch_2, scratch_3) merge jmp :RETURN: scratch_4 else `dummy`2 = undef merge if separator ⌜≈⌝ null separator = "" else `dummy`2 = undef merge scratch_0 = toObj `self`14 scratch_1 = toObj scratch_0 ⌜⋆⌝ "source" scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = separator (scratch_2).("length") = 1.0 scratch_3 = scratch_1 ⌜⋆⌝ "join"(scratch_1, scratch_2) merge jmp :RETURN: scratch_3 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("ToString") = scratch_2 scratch_0 = toObj ArrayEnumerable scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = newfun (0.0) (`self`14, arguments) => decl index = undef, source = undef in scratch (7) in :RETURN:: scratch_0 = toObj `self`14 source = scratch_0 ⌜⋆⌝ "source" index = 0.0 scratch_0 = toObj Functions scratch_1 = newfun (0.0) (`self`14, arguments) => scratch (16) in :RETURN:: scratch_0 = toObj source if typeof index ⌜≡⌝ "string" ⌜&&⌝ typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_1 = index ⌜≺⌝ scratch_0 ⌜⋆⌝ "length" else if isprim index scratch_2 = tonum index else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = index (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim scratch_0 ⌜⋆⌝ "length" scratch_4 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_1 = scratch_2 ⌜<⌝ scratch_4 merge if tobool scratch_1 if isprim index scratch_6 = tonum index else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = index (scratch_7).("length") = 1.0 scratch_6 = `numberVar`8(`window`0, scratch_7) merge merge scratch_8 = scratch_6 index = scratch_8 ⌜+⌝ 1.0 scratch_9 = toObj source if isprim scratch_8 scratch_10 = tostr scratch_8 else scratch_11 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_11).("length") = 0.0 scratch_10 = scratch_8 ⌜⋆⌝ "toString"(scratch_8, scratch_11) merge merge scratch_12 = toObj `self`14 scratch_13 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_13).("0") = scratch_9 ⌜⋆⌝ scratch_10 (scratch_13).("length") = 1.0 scratch_14 = scratch_12 ⌜⋆⌝ "Yield"(scratch_12, scratch_13) merge scratch_15 = scratch_14 else scratch_15 = false merge jmp :RETURN: scratch_15 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 scratch_4 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "Blank" (scratch_5).("1") = scratch_1 (scratch_5).("2") = scratch_4 ⌜⋆⌝ "Blank" (scratch_5).("length") = 3.0 scratch_6 = new IEnumerator(scratch_5) merge merge jmp :RETURN: scratch_6 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) merge (scratch_2).("prototype") = scratch_4 (scratch_1).("GetEnumerator") = scratch_2 scratch_0 = newfun (0.0) (`self`14, arguments) => decl HashEntry = undef, Dictionary = undef, EntryList = undef, HasOwnProperty = undef, ComputeHashCode = undef in scratch (27) in :RETURN:: scratch_0 = newfun (2.0) (`self`14, arguments) => decl target = arguments ⌜⋆⌝ "0", key = arguments ⌜⋆⌝ "1" in scratch (5) in :RETURN:: scratch_0 = toObj `window`0 ⌜⋆⌝ "Object" scratch_1 = toObj scratch_0 ⌜⋆⌝ "prototype" scratch_2 = toObj scratch_1 ⌜⋆⌝ "hasOwnProperty" scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = target (scratch_3).("1") = key (scratch_3).("length") = 2.0 scratch_4 = scratch_2 ⌜⋆⌝ "call"(scratch_2, scratch_3) merge jmp :RETURN: scratch_4 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 HasOwnProperty = scratch_0 scratch_0 = newfun (1.0) (`self`14, arguments) => decl obj = arguments ⌜⋆⌝ "0" in scratch (11) in :RETURN:: if obj ⌜≡⌝ null jmp :RETURN: "null" else `dummy`2 = undef merge if obj ⌜≡⌝ `window`0 ⌜⋆⌝ "undefined" jmp :RETURN: "undefined" else `dummy`2 = undef merge scratch_0 = toObj obj scratch_1 = toObj Types if typeof scratch_0 ⌜⋆⌝ "toString" ⌜≡⌝ scratch_1 ⌜⋆⌝ "Function" scratch_2 = toObj obj scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = scratch_2 ⌜⋆⌝ "toString"(scratch_2, scratch_3) merge scratch_5 = scratch_4 else scratch_6 = toObj `window`0 ⌜⋆⌝ "Object" scratch_7 = toObj scratch_6 ⌜⋆⌝ "prototype" scratch_8 = toObj scratch_7 ⌜⋆⌝ "toString" scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("0") = obj (scratch_9).("length") = 1.0 scratch_10 = scratch_8 ⌜⋆⌝ "call"(scratch_8, scratch_9) merge scratch_5 = scratch_10 merge jmp :RETURN: scratch_5 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 ComputeHashCode = scratch_0 scratch_0 = newfun (2.0) (`self`14, arguments) => decl key = arguments ⌜⋆⌝ "0", value = arguments ⌜⋆⌝ "1" in scratch (1) in :RETURN:: scratch_0 = toObj `self`14 (scratch_0).("Key") = key scratch_0 = toObj `self`14 (scratch_0).("Value") = value scratch_0 = toObj `self`14 (scratch_0).("Prev") = null scratch_0 = toObj `self`14 (scratch_0).("Next") = null 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 HashEntry = scratch_0 scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (1) in :RETURN:: scratch_0 = toObj `self`14 (scratch_0).("First") = null scratch_0 = toObj `self`14 (scratch_0).("Last") = null 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 EntryList = scratch_0 scratch_0 = toObj EntryList scratch_1 = newfun (1.0) (`self`14, arguments) => decl entry = arguments ⌜⋆⌝ "0" in scratch (2) in :RETURN:: scratch_0 = toObj `self`14 if ⌞¬⌟ scratch_0 ⌜⋆⌝ "Last" ⌜≈⌝ null scratch_0 = toObj `self`14 scratch_1 = toObj scratch_0 ⌜⋆⌝ "Last" (scratch_1).("Next") = entry scratch_0 = toObj entry scratch_1 = toObj `self`14 (scratch_0).("Prev") = scratch_1 ⌜⋆⌝ "Last" scratch_0 = toObj `self`14 (scratch_0).("Last") = entry else scratch_0 = toObj `self`14 scratch_1 = toObj `self`14 (scratch_1).("Last") = entry (scratch_0).("First") = entry merge scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 scratch_4 = newfun (2.0) (`self`14, arguments) => decl entry = arguments ⌜⋆⌝ "0", newEntry = arguments ⌜⋆⌝ "1" in scratch (2) in :RETURN:: scratch_0 = toObj entry if ⌞¬⌟ scratch_0 ⌜⋆⌝ "Prev" ⌜≈⌝ null scratch_0 = toObj entry scratch_1 = toObj scratch_0 ⌜⋆⌝ "Prev" (scratch_1).("Next") = newEntry scratch_0 = toObj newEntry scratch_1 = toObj entry (scratch_0).("Prev") = scratch_1 ⌜⋆⌝ "Prev" else scratch_0 = toObj `self`14 (scratch_0).("First") = newEntry merge scratch_0 = toObj entry if ⌞¬⌟ scratch_0 ⌜⋆⌝ "Next" ⌜≈⌝ null scratch_0 = toObj entry scratch_1 = toObj scratch_0 ⌜⋆⌝ "Next" (scratch_1).("Prev") = newEntry scratch_0 = toObj newEntry scratch_1 = toObj entry (scratch_0).("Next") = scratch_1 ⌜⋆⌝ "Next" else scratch_0 = toObj `self`14 (scratch_0).("Last") = newEntry merge scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("length") = 0.0 scratch_6 = new `objectVar`12(scratch_5) merge (scratch_4).("prototype") = scratch_6 scratch_7 = newfun (1.0) (`self`14, arguments) => decl entry = arguments ⌜⋆⌝ "0" in scratch (6) in :RETURN:: scratch_0 = toObj entry if ⌞¬⌟ scratch_0 ⌜⋆⌝ "Prev" ⌜≈⌝ null scratch_1 = toObj entry scratch_2 = toObj scratch_1 ⌜⋆⌝ "Prev" scratch_3 = toObj entry (scratch_2).("Next") = scratch_3 ⌜⋆⌝ "Next" else scratch_4 = toObj `self`14 scratch_5 = toObj entry (scratch_4).("First") = scratch_5 ⌜⋆⌝ "Next" merge scratch_0 = toObj entry if ⌞¬⌟ scratch_0 ⌜⋆⌝ "Next" ⌜≈⌝ null scratch_1 = toObj entry scratch_2 = toObj scratch_1 ⌜⋆⌝ "Next" scratch_3 = toObj entry (scratch_2).("Prev") = scratch_3 ⌜⋆⌝ "Prev" else scratch_4 = toObj `self`14 scratch_5 = toObj entry (scratch_4).("Last") = scratch_5 ⌜⋆⌝ "Prev" merge scratch_8 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_8).("length") = 0.0 scratch_9 = new `objectVar`12(scratch_8) merge (scratch_7).("prototype") = scratch_9 scratch_10 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_10).("length") = 0.0 scratch_11 = new `objectVar`12(scratch_10) (scratch_11).("AddLast") = scratch_1 (scratch_11).("Replace") = scratch_4 (scratch_11).("Remove") = scratch_7 (scratch_0).("prototype") = scratch_11 scratch_0 = newfun (1.0) (`self`14, arguments) => decl compareSelector = arguments ⌜⋆⌝ "0" in scratch (3) in :RETURN:: scratch_0 = toObj `self`14 (scratch_0).("count") = 0.0 scratch_0 = toObj `self`14 if isprim EntryList throw "TypeError" else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = new EntryList(scratch_1) merge merge (scratch_0).("entryList") = scratch_2 scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = new `objectVar`12(scratch_1) (scratch_0).("buckets") = scratch_2 scratch_0 = toObj `self`14 if compareSelector ⌜≈⌝ null scratch_1 = toObj Functions scratch_2 = scratch_1 ⌜⋆⌝ "Identity" else scratch_2 = compareSelector merge (scratch_0).("compareSelector") = scratch_2 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 Dictionary = scratch_0 scratch_0 = toObj Dictionary scratch_1 = newfun (2.0) (`self`14, arguments) => decl key = arguments ⌜⋆⌝ "0", value = arguments ⌜⋆⌝ "1", i = undef, entry = undef, array = undef, hash = undef, compareKey = undef in scratch (7) in :RETURN:: scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = key (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "compareSelector"(scratch_0, scratch_1) merge compareKey = scratch_2 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = compareKey (scratch_0).("length") = 1.0 scratch_1 = ComputeHashCode(`window`0, scratch_0) merge hash = scratch_1 if isprim HashEntry throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = key (scratch_0).("1") = value (scratch_0).("length") = 2.0 scratch_1 = new HashEntry(scratch_0) merge merge entry = scratch_1 scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = scratch_0 ⌜⋆⌝ "buckets" (scratch_1).("1") = hash (scratch_1).("length") = 2.0 scratch_2 = HasOwnProperty(`window`0, scratch_1) merge if tobool scratch_2 scratch_0 = toObj `self`14 scratch_1 = toObj scratch_0 ⌜⋆⌝ "buckets" if isprim hash scratch_2 = tostr hash else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_2 = hash ⌜⋆⌝ "toString"(hash, scratch_3) merge merge array = scratch_1 ⌜⋆⌝ scratch_2 :BREAK:: i = 0.0 scratch_0 = toObj array if typeof i ⌜≡⌝ "string" ⌜&&⌝ typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_1 = i ⌜≺⌝ scratch_0 ⌜⋆⌝ "length" else if isprim i scratch_2 = tonum i else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = i (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim scratch_0 ⌜⋆⌝ "length" scratch_4 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_1 = scratch_2 ⌜<⌝ scratch_4 merge scratch_6 = tobool scratch_1 while scratch_6 merge :CONTINUE:: scratch_0 = toObj array if isprim i scratch_1 = tostr i else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_1 = i ⌜⋆⌝ "toString"(i, scratch_2) merge merge scratch_3 = toObj scratch_0 ⌜⋆⌝ scratch_1 scratch_4 = toObj `self`14 scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_3 ⌜⋆⌝ "Key" (scratch_5).("length") = 1.0 scratch_6 = scratch_4 ⌜⋆⌝ "compareSelector"(scratch_4, scratch_5) merge if scratch_6 ⌜≡⌝ compareKey scratch_0 = toObj `self`14 scratch_1 = toObj array if isprim i scratch_2 = tostr i else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_2 = i ⌜⋆⌝ "toString"(i, scratch_3) merge merge scratch_4 = toObj scratch_0 ⌜⋆⌝ "entryList" scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_1 ⌜⋆⌝ scratch_2 (scratch_5).("1") = entry (scratch_5).("length") = 2.0 scratch_6 = scratch_4 ⌜⋆⌝ "Replace"(scratch_4, scratch_5) merge scratch_0 = toObj array if isprim i scratch_1 = tostr i else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_1 = i ⌜⋆⌝ "toString"(i, scratch_2) merge merge (scratch_0).(scratch_1) = entry jmp :RETURN: undef else `dummy`2 = undef merge merge if isprim i scratch_0 = tonum i else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = i (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge scratch_2 = scratch_0 i = scratch_2 ⌜+⌝ 1.0 scratch_0 = toObj array if typeof i ⌜≡⌝ "string" ⌜&&⌝ typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_1 = i ⌜≺⌝ scratch_0 ⌜⋆⌝ "length" else if isprim i scratch_2 = tonum i else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = i (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim scratch_0 ⌜⋆⌝ "length" scratch_4 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_1 = scratch_2 ⌜<⌝ scratch_4 merge scratch_6 = tobool scratch_1 merge merge scratch_0 = toObj array scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = entry (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "push"(scratch_0, scratch_1) merge else scratch_0 = toObj `self`14 scratch_1 = toObj scratch_0 ⌜⋆⌝ "buckets" if isprim hash scratch_2 = tostr hash else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_2 = hash ⌜⋆⌝ "toString"(hash, scratch_3) merge merge scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `arrayVar`3(scratch_4) merge (scratch_5).("0") = entry (scratch_5).("length") = 1.0 (scratch_1).(scratch_2) = scratch_5 merge scratch_0 = toObj `self`14 if isprim scratch_0 ⌜⋆⌝ "count" scratch_1 = tonum scratch_0 ⌜⋆⌝ "count" else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = scratch_0 ⌜⋆⌝ "count" (scratch_2).("length") = 1.0 scratch_1 = `numberVar`8(`window`0, scratch_2) merge merge scratch_3 = scratch_1 (scratch_0).("count") = scratch_3 ⌜+⌝ 1.0 scratch_0 = toObj `self`14 scratch_1 = toObj scratch_0 ⌜⋆⌝ "entryList" scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = entry (scratch_2).("length") = 1.0 scratch_3 = scratch_1 ⌜⋆⌝ "AddLast"(scratch_1, scratch_2) merge scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 scratch_4 = newfun (1.0) (`self`14, arguments) => decl key = arguments ⌜⋆⌝ "0", i = undef, entry = undef, array = undef, hash = undef, compareKey = undef in scratch (7) in :RETURN:: scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = key (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "compareSelector"(scratch_0, scratch_1) merge compareKey = scratch_2 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = compareKey (scratch_0).("length") = 1.0 scratch_1 = ComputeHashCode(`window`0, scratch_0) merge hash = scratch_1 scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = scratch_0 ⌜⋆⌝ "buckets" (scratch_1).("1") = hash (scratch_1).("length") = 2.0 scratch_2 = HasOwnProperty(`window`0, scratch_1) merge if ⌞¬⌟ tobool scratch_2 jmp :RETURN: `window`0 ⌜⋆⌝ "undefined" else `dummy`2 = undef merge scratch_0 = toObj `self`14 scratch_1 = toObj scratch_0 ⌜⋆⌝ "buckets" if isprim hash scratch_2 = tostr hash else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_2 = hash ⌜⋆⌝ "toString"(hash, scratch_3) merge merge array = scratch_1 ⌜⋆⌝ scratch_2 :BREAK:: i = 0.0 scratch_0 = toObj array if typeof i ⌜≡⌝ "string" ⌜&&⌝ typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_1 = i ⌜≺⌝ scratch_0 ⌜⋆⌝ "length" else if isprim i scratch_2 = tonum i else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = i (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim scratch_0 ⌜⋆⌝ "length" scratch_4 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_1 = scratch_2 ⌜<⌝ scratch_4 merge scratch_6 = tobool scratch_1 while scratch_6 merge :CONTINUE:: scratch_0 = toObj array if isprim i scratch_1 = tostr i else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_1 = i ⌜⋆⌝ "toString"(i, scratch_2) merge merge entry = scratch_0 ⌜⋆⌝ scratch_1 scratch_0 = toObj entry scratch_1 = toObj `self`14 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = scratch_0 ⌜⋆⌝ "Key" (scratch_2).("length") = 1.0 scratch_3 = scratch_1 ⌜⋆⌝ "compareSelector"(scratch_1, scratch_2) merge if scratch_3 ⌜≡⌝ compareKey scratch_4 = toObj entry jmp :RETURN: scratch_4 ⌜⋆⌝ "Value" else `dummy`2 = undef merge merge if isprim i scratch_0 = tonum i else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = i (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge scratch_2 = scratch_0 i = scratch_2 ⌜+⌝ 1.0 scratch_0 = toObj array if typeof i ⌜≡⌝ "string" ⌜&&⌝ typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_1 = i ⌜≺⌝ scratch_0 ⌜⋆⌝ "length" else if isprim i scratch_2 = tonum i else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = i (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim scratch_0 ⌜⋆⌝ "length" scratch_4 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_1 = scratch_2 ⌜<⌝ scratch_4 merge scratch_6 = tobool scratch_1 merge merge jmp :RETURN: `window`0 ⌜⋆⌝ "undefined" scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("length") = 0.0 scratch_6 = new `objectVar`12(scratch_5) merge (scratch_4).("prototype") = scratch_6 scratch_7 = newfun (2.0) (`self`14, arguments) => decl key = arguments ⌜⋆⌝ "0", value = arguments ⌜⋆⌝ "1", i = undef, array = undef, newEntry = undef, hash = undef, compareKey = undef in scratch (7) in :RETURN:: scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = key (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "compareSelector"(scratch_0, scratch_1) merge compareKey = scratch_2 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = compareKey (scratch_0).("length") = 1.0 scratch_1 = ComputeHashCode(`window`0, scratch_0) merge hash = scratch_1 scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = scratch_0 ⌜⋆⌝ "buckets" (scratch_1).("1") = hash (scratch_1).("length") = 2.0 scratch_2 = HasOwnProperty(`window`0, scratch_1) merge if tobool scratch_2 scratch_0 = toObj `self`14 scratch_1 = toObj scratch_0 ⌜⋆⌝ "buckets" if isprim hash scratch_2 = tostr hash else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_2 = hash ⌜⋆⌝ "toString"(hash, scratch_3) merge merge array = scratch_1 ⌜⋆⌝ scratch_2 :BREAK:: i = 0.0 scratch_0 = toObj array if typeof i ⌜≡⌝ "string" ⌜&&⌝ typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_1 = i ⌜≺⌝ scratch_0 ⌜⋆⌝ "length" else if isprim i scratch_2 = tonum i else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = i (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim scratch_0 ⌜⋆⌝ "length" scratch_4 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_1 = scratch_2 ⌜<⌝ scratch_4 merge scratch_6 = tobool scratch_1 while scratch_6 merge :CONTINUE:: scratch_0 = toObj array if isprim i scratch_1 = tostr i else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_1 = i ⌜⋆⌝ "toString"(i, scratch_2) merge merge scratch_3 = toObj scratch_0 ⌜⋆⌝ scratch_1 scratch_4 = toObj `self`14 scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_3 ⌜⋆⌝ "Key" (scratch_5).("length") = 1.0 scratch_6 = scratch_4 ⌜⋆⌝ "compareSelector"(scratch_4, scratch_5) merge if scratch_6 ⌜≡⌝ compareKey if isprim HashEntry throw "TypeError" else scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = key (scratch_0).("1") = value (scratch_0).("length") = 2.0 scratch_1 = new HashEntry(scratch_0) merge merge newEntry = scratch_1 scratch_0 = toObj `self`14 scratch_1 = toObj array if isprim i scratch_2 = tostr i else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_2 = i ⌜⋆⌝ "toString"(i, scratch_3) merge merge scratch_4 = toObj scratch_0 ⌜⋆⌝ "entryList" scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_1 ⌜⋆⌝ scratch_2 (scratch_5).("1") = newEntry (scratch_5).("length") = 2.0 scratch_6 = scratch_4 ⌜⋆⌝ "Replace"(scratch_4, scratch_5) merge scratch_0 = toObj array if isprim i scratch_1 = tostr i else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_1 = i ⌜⋆⌝ "toString"(i, scratch_2) merge merge (scratch_0).(scratch_1) = newEntry jmp :RETURN: true else `dummy`2 = undef merge merge if isprim i scratch_0 = tonum i else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = i (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge scratch_2 = scratch_0 i = scratch_2 ⌜+⌝ 1.0 scratch_0 = toObj array if typeof i ⌜≡⌝ "string" ⌜&&⌝ typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_1 = i ⌜≺⌝ scratch_0 ⌜⋆⌝ "length" else if isprim i scratch_2 = tonum i else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = i (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim scratch_0 ⌜⋆⌝ "length" scratch_4 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_1 = scratch_2 ⌜<⌝ scratch_4 merge scratch_6 = tobool scratch_1 merge merge else `dummy`2 = undef merge jmp :RETURN: false scratch_8 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_8).("length") = 0.0 scratch_9 = new `objectVar`12(scratch_8) merge (scratch_7).("prototype") = scratch_9 scratch_10 = newfun (1.0) (`self`14, arguments) => decl key = arguments ⌜⋆⌝ "0", i = undef, array = undef, hash = undef, compareKey = undef in scratch (7) in :RETURN:: scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = key (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "compareSelector"(scratch_0, scratch_1) merge compareKey = scratch_2 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = compareKey (scratch_0).("length") = 1.0 scratch_1 = ComputeHashCode(`window`0, scratch_0) merge hash = scratch_1 scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = scratch_0 ⌜⋆⌝ "buckets" (scratch_1).("1") = hash (scratch_1).("length") = 2.0 scratch_2 = HasOwnProperty(`window`0, scratch_1) merge if ⌞¬⌟ tobool scratch_2 jmp :RETURN: false else `dummy`2 = undef merge scratch_0 = toObj `self`14 scratch_1 = toObj scratch_0 ⌜⋆⌝ "buckets" if isprim hash scratch_2 = tostr hash else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_2 = hash ⌜⋆⌝ "toString"(hash, scratch_3) merge merge array = scratch_1 ⌜⋆⌝ scratch_2 :BREAK:: i = 0.0 scratch_0 = toObj array if typeof i ⌜≡⌝ "string" ⌜&&⌝ typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_1 = i ⌜≺⌝ scratch_0 ⌜⋆⌝ "length" else if isprim i scratch_2 = tonum i else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = i (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim scratch_0 ⌜⋆⌝ "length" scratch_4 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_1 = scratch_2 ⌜<⌝ scratch_4 merge scratch_6 = tobool scratch_1 while scratch_6 merge :CONTINUE:: scratch_0 = toObj array if isprim i scratch_1 = tostr i else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_1 = i ⌜⋆⌝ "toString"(i, scratch_2) merge merge scratch_3 = toObj scratch_0 ⌜⋆⌝ scratch_1 scratch_4 = toObj `self`14 scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_3 ⌜⋆⌝ "Key" (scratch_5).("length") = 1.0 scratch_6 = scratch_4 ⌜⋆⌝ "compareSelector"(scratch_4, scratch_5) merge if scratch_6 ⌜≡⌝ compareKey jmp :RETURN: true else `dummy`2 = undef merge merge if isprim i scratch_0 = tonum i else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = i (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge scratch_2 = scratch_0 i = scratch_2 ⌜+⌝ 1.0 scratch_0 = toObj array if typeof i ⌜≡⌝ "string" ⌜&&⌝ typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_1 = i ⌜≺⌝ scratch_0 ⌜⋆⌝ "length" else if isprim i scratch_2 = tonum i else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = i (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim scratch_0 ⌜⋆⌝ "length" scratch_4 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_1 = scratch_2 ⌜<⌝ scratch_4 merge scratch_6 = tobool scratch_1 merge merge jmp :RETURN: false scratch_11 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_11).("length") = 0.0 scratch_12 = new `objectVar`12(scratch_11) merge (scratch_10).("prototype") = scratch_12 scratch_13 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj `self`14 (scratch_0).("count") = 0.0 scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = new `objectVar`12(scratch_1) (scratch_0).("buckets") = scratch_2 scratch_0 = toObj `self`14 if isprim EntryList throw "TypeError" else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = new EntryList(scratch_1) merge merge (scratch_0).("entryList") = scratch_2 scratch_14 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_14).("length") = 0.0 scratch_15 = new `objectVar`12(scratch_14) merge (scratch_13).("prototype") = scratch_15 scratch_16 = newfun (1.0) (`self`14, arguments) => decl key = arguments ⌜⋆⌝ "0", i = undef, array = undef, hash = undef, compareKey = undef in scratch (7) in :RETURN:: scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = key (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "compareSelector"(scratch_0, scratch_1) merge compareKey = scratch_2 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = compareKey (scratch_0).("length") = 1.0 scratch_1 = ComputeHashCode(`window`0, scratch_0) merge hash = scratch_1 scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = scratch_0 ⌜⋆⌝ "buckets" (scratch_1).("1") = hash (scratch_1).("length") = 2.0 scratch_2 = HasOwnProperty(`window`0, scratch_1) merge if ⌞¬⌟ tobool scratch_2 jmp :RETURN: undef else `dummy`2 = undef merge scratch_0 = toObj `self`14 scratch_1 = toObj scratch_0 ⌜⋆⌝ "buckets" if isprim hash scratch_2 = tostr hash else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_2 = hash ⌜⋆⌝ "toString"(hash, scratch_3) merge merge array = scratch_1 ⌜⋆⌝ scratch_2 :BREAK:: i = 0.0 scratch_0 = toObj array if typeof i ⌜≡⌝ "string" ⌜&&⌝ typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_1 = i ⌜≺⌝ scratch_0 ⌜⋆⌝ "length" else if isprim i scratch_2 = tonum i else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = i (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim scratch_0 ⌜⋆⌝ "length" scratch_4 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_1 = scratch_2 ⌜<⌝ scratch_4 merge scratch_6 = tobool scratch_1 while scratch_6 merge :CONTINUE:: scratch_0 = toObj array if isprim i scratch_1 = tostr i else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_1 = i ⌜⋆⌝ "toString"(i, scratch_2) merge merge scratch_3 = toObj scratch_0 ⌜⋆⌝ scratch_1 scratch_4 = toObj `self`14 scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_3 ⌜⋆⌝ "Key" (scratch_5).("length") = 1.0 scratch_6 = scratch_4 ⌜⋆⌝ "compareSelector"(scratch_4, scratch_5) merge if scratch_6 ⌜≡⌝ compareKey scratch_0 = toObj `self`14 scratch_1 = toObj array if isprim i scratch_2 = tostr i else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_2 = i ⌜⋆⌝ "toString"(i, scratch_3) merge merge scratch_4 = toObj scratch_0 ⌜⋆⌝ "entryList" scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_1 ⌜⋆⌝ scratch_2 (scratch_5).("length") = 1.0 scratch_6 = scratch_4 ⌜⋆⌝ "Remove"(scratch_4, scratch_5) merge scratch_0 = toObj array scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = i (scratch_1).("1") = 1.0 (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "splice"(scratch_0, scratch_1) merge scratch_0 = toObj array if scratch_0 ⌜⋆⌝ "length" ⌜≈⌝ 0.0 scratch_1 = toObj `self`14 if isprim hash scratch_2 = tostr hash else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_2 = hash ⌜⋆⌝ "toString"(hash, scratch_3) merge merge if scratch_1 ⌜⋆⌝ "buckets" ⌜≡⌝ undef ⌜||⌝ scratch_1 ⌜⋆⌝ "buckets" ⌜≡⌝ null throw "TypeError" else if typeof scratch_1 ⌜⋆⌝ "buckets" ⌜≡⌝ "object" scratch_4 = delete (scratch_1 ⌜⋆⌝ "buckets").(scratch_2) else scratch_4 = true merge merge else `dummy`2 = undef merge scratch_0 = toObj `self`14 if isprim scratch_0 ⌜⋆⌝ "count" scratch_1 = tonum scratch_0 ⌜⋆⌝ "count" else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = scratch_0 ⌜⋆⌝ "count" (scratch_2).("length") = 1.0 scratch_1 = `numberVar`8(`window`0, scratch_2) merge merge scratch_3 = scratch_1 (scratch_0).("count") = scratch_3 ⌜+⌝ -1.0 jmp :RETURN: undef else `dummy`2 = undef merge merge if isprim i scratch_0 = tonum i else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = i (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge scratch_2 = scratch_0 i = scratch_2 ⌜+⌝ 1.0 scratch_0 = toObj array if typeof i ⌜≡⌝ "string" ⌜&&⌝ typeof scratch_0 ⌜⋆⌝ "length" ⌜≡⌝ "string" scratch_1 = i ⌜≺⌝ scratch_0 ⌜⋆⌝ "length" else if isprim i scratch_2 = tonum i else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = i (scratch_3).("length") = 1.0 scratch_2 = `numberVar`8(`window`0, scratch_3) merge merge if isprim scratch_0 ⌜⋆⌝ "length" scratch_4 = tonum scratch_0 ⌜⋆⌝ "length" else scratch_5 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_5).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_5).("length") = 1.0 scratch_4 = `numberVar`8(`window`0, scratch_5) merge merge scratch_1 = scratch_2 ⌜<⌝ scratch_4 merge scratch_6 = tobool scratch_1 merge merge scratch_17 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_17).("length") = 0.0 scratch_18 = new `objectVar`12(scratch_17) merge (scratch_16).("prototype") = scratch_18 scratch_19 = newfun (0.0) (`self`14, arguments) => scratch (1) in :RETURN:: scratch_0 = toObj `self`14 jmp :RETURN: scratch_0 ⌜⋆⌝ "count" scratch_20 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_20).("length") = 0.0 scratch_21 = new `objectVar`12(scratch_20) merge (scratch_19).("prototype") = scratch_21 scratch_22 = newfun (0.0) (`self`14, arguments) => decl self = undef in scratch (5) in :RETURN:: self = `self`14 scratch_0 = newfun (0.0) (`self`14, arguments) => decl currentEntry = undef in scratch (9) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (2) in :RETURN:: scratch_0 = toObj self scratch_1 = toObj scratch_0 ⌜⋆⌝ "entryList" currentEntry = scratch_1 ⌜⋆⌝ "First" 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 scratch_3 = newfun (0.0) (`self`14, arguments) => decl result = undef in scratch (4) in :RETURN:: if ⌞¬⌟ currentEntry ⌜≈⌝ null scratch_0 = toObj currentEntry scratch_1 = toObj currentEntry scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) (scratch_3).("Key") = scratch_0 ⌜⋆⌝ "Key" (scratch_3).("Value") = scratch_1 ⌜⋆⌝ "Value" result = scratch_3 scratch_0 = toObj currentEntry currentEntry = scratch_0 ⌜⋆⌝ "Next" scratch_0 = toObj `self`14 scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = result (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Yield"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 else `dummy`2 = undef merge jmp :RETURN: false scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj Functions if isprim IEnumerator throw "TypeError" else scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_0 (scratch_7).("1") = scratch_3 (scratch_7).("2") = scratch_6 ⌜⋆⌝ "Blank" (scratch_7).("length") = 3.0 scratch_8 = new IEnumerator(scratch_7) merge merge jmp :RETURN: scratch_8 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 if isprim Enumerable throw "TypeError" else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_0 (scratch_3).("length") = 1.0 scratch_4 = new Enumerable(scratch_3) merge merge jmp :RETURN: scratch_4 scratch_23 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_23).("length") = 0.0 scratch_24 = new `objectVar`12(scratch_23) merge (scratch_22).("prototype") = scratch_24 scratch_25 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_25).("length") = 0.0 scratch_26 = new `objectVar`12(scratch_25) (scratch_26).("Add") = scratch_1 (scratch_26).("Get") = scratch_4 (scratch_26).("Set") = scratch_7 (scratch_26).("Contains") = scratch_10 (scratch_26).("Clear") = scratch_13 (scratch_26).("Remove") = scratch_16 (scratch_26).("Count") = scratch_19 (scratch_26).("ToEnumerable") = scratch_22 (scratch_0).("prototype") = scratch_26 jmp :RETURN: Dictionary 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 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = scratch_0(`window`0, scratch_3) merge Dictionary = scratch_4 scratch_0 = newfun (1.0) (`self`14, arguments) => decl dictionary = arguments ⌜⋆⌝ "0" in scratch (4) in :RETURN:: scratch_0 = toObj `self`14 scratch_1 = newfun (0.0) (`self`14, arguments) => scratch (3) in :RETURN:: scratch_0 = toObj dictionary scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Count"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("Count") = scratch_1 scratch_0 = toObj `self`14 scratch_1 = newfun (1.0) (`self`14, arguments) => decl key = arguments ⌜⋆⌝ "0" in scratch (6) in :RETURN:: scratch_0 = toObj dictionary scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = key (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Get"(scratch_0, scratch_1) merge scratch_3 = toObj Enumerable scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_2 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "From"(scratch_3, scratch_4) merge jmp :RETURN: scratch_5 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("Get") = scratch_1 scratch_0 = toObj `self`14 scratch_1 = newfun (1.0) (`self`14, arguments) => decl key = arguments ⌜⋆⌝ "0" in scratch (3) in :RETURN:: scratch_0 = toObj dictionary scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = key (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Contains"(scratch_0, scratch_1) merge jmp :RETURN: scratch_2 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("Contains") = scratch_1 scratch_0 = toObj `self`14 scratch_1 = newfun (0.0) (`self`14, arguments) => scratch (9) in :RETURN:: scratch_0 = toObj dictionary scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "ToEnumerable"(scratch_0, scratch_1) merge scratch_3 = newfun (1.0) (`self`14, arguments) => decl kvp = arguments ⌜⋆⌝ "0" in scratch (4) in :RETURN:: scratch_0 = toObj kvp scratch_1 = toObj kvp if isprim Grouping throw "TypeError" else scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = scratch_0 ⌜⋆⌝ "Key" (scratch_2).("1") = scratch_1 ⌜⋆⌝ "Value" (scratch_2).("length") = 2.0 scratch_3 = new Grouping(scratch_2) merge merge jmp :RETURN: scratch_3 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj scratch_2 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_3 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "Select"(scratch_6, scratch_7) merge jmp :RETURN: scratch_8 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("ToEnumerable") = scratch_1 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 Lookup = scratch_0 scratch_0 = newfun (2.0) (`self`14, arguments) => decl key = arguments ⌜⋆⌝ "0", elements = arguments ⌜⋆⌝ "1" in scratch (4) in :RETURN:: scratch_0 = toObj `self`14 scratch_1 = newfun (0.0) (`self`14, arguments) => :RETURN:: jmp :RETURN: key scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `objectVar`12(scratch_2) merge (scratch_1).("prototype") = scratch_3 (scratch_0).("Key") = scratch_1 scratch_0 = toObj ArrayEnumerable scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = `self`14 (scratch_1).("1") = elements (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "call"(scratch_0, scratch_1) merge 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 Grouping = scratch_0 scratch_0 = toObj Grouping if isprim ArrayEnumerable throw "TypeError" else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = new ArrayEnumerable(scratch_1) merge merge (scratch_0).("prototype") = scratch_2 jmp :RETURN: Enumerable 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 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = scratch_0(`window`0, scratch_3) merge (`window`0).("Enumerable") = scratch_4 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = "Enumerable" (scratch_0).("length") = 1.0 scratch_1 = `window`0 ⌜⋆⌝ "module"(`window`0, scratch_0) merge scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (11) in :RETURN:: scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = 10.0 (scratch_1).("2") = 31.0 (scratch_1).("3") = 42.0 (scratch_1).("length") = 4.0 scratch_2 = scratch_0 ⌜⋆⌝ "Choice"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = 10.0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Take"(scratch_3, scratch_4) merge scratch_6 = toObj scratch_5 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = scratch_6 ⌜⋆⌝ "ToArray"(scratch_6, scratch_7) merge (`window`0).("actual") = scratch_8 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = 10.0 (scratch_1).("2") = 31.0 (scratch_1).("3") = 42.0 (scratch_1).("4") = 1.0 (scratch_1).("5") = 10.0 (scratch_1).("6") = 31.0 (scratch_1).("7") = 42.0 (scratch_1).("8") = 1.0 (scratch_1).("9") = 10.0 (scratch_1).("length") = 10.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("2") = "random test. if failed retry" (scratch_2).("length") = 3.0 scratch_3 = `window`0 ⌜⋆⌝ "notEqual"(`window`0, scratch_2) merge scratch_0 = toObj `window`0 ⌜⋆⌝ "actual" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_1).("length") = 1.0 scratch_2 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_1) merge scratch_0 = toObj `window`0 ⌜⋆⌝ "actual" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_1).("1") = 10.0 (scratch_1).("length") = 2.0 scratch_2 = `window`0 ⌜⋆⌝ "equal"(`window`0, scratch_1) merge scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = 10.0 (scratch_1).("2") = 31.0 (scratch_1).("3") = 42.0 (scratch_1).("length") = 4.0 scratch_2 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_1 (scratch_3).("length") = 1.0 scratch_4 = scratch_2 ⌜⋆⌝ "Choice"(scratch_2, scratch_3) merge scratch_5 = toObj scratch_4 scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = 10.0 (scratch_6).("length") = 1.0 scratch_7 = scratch_5 ⌜⋆⌝ "Take"(scratch_5, scratch_6) merge scratch_8 = toObj scratch_7 scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("length") = 0.0 scratch_10 = scratch_8 ⌜⋆⌝ "ToArray"(scratch_8, scratch_9) merge (`window`0).("actual") = scratch_10 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = 10.0 (scratch_1).("2") = 31.0 (scratch_1).("3") = 42.0 (scratch_1).("4") = 1.0 (scratch_1).("5") = 10.0 (scratch_1).("6") = 31.0 (scratch_1).("7") = 42.0 (scratch_1).("8") = 1.0 (scratch_1).("9") = 10.0 (scratch_1).("length") = 10.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("2") = "random test. if failed retry" (scratch_2).("length") = 3.0 scratch_3 = `window`0 ⌜⋆⌝ "notEqual"(`window`0, scratch_2) merge scratch_0 = toObj `window`0 ⌜⋆⌝ "actual" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_1).("length") = 1.0 scratch_2 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_1) merge scratch_0 = toObj `window`0 ⌜⋆⌝ "actual" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = scratch_0 ⌜⋆⌝ "length" (scratch_1).("1") = 10.0 (scratch_1).("length") = 2.0 scratch_2 = `window`0 ⌜⋆⌝ "equal"(`window`0, scratch_1) merge 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 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = "Choice" (scratch_3).("1") = scratch_0 (scratch_3).("length") = 2.0 scratch_4 = `window`0 ⌜⋆⌝ "test"(`window`0, scratch_3) merge scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (11) in :RETURN:: scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = 10.0 (scratch_1).("2") = 31.0 (scratch_1).("3") = 42.0 (scratch_1).("length") = 4.0 scratch_2 = scratch_0 ⌜⋆⌝ "Cycle"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = 10.0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Take"(scratch_3, scratch_4) merge scratch_6 = toObj scratch_5 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = scratch_6 ⌜⋆⌝ "ToArray"(scratch_6, scratch_7) merge (`window`0).("actual") = scratch_8 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = 10.0 (scratch_1).("2") = 31.0 (scratch_1).("3") = 42.0 (scratch_1).("4") = 1.0 (scratch_1).("5") = 10.0 (scratch_1).("6") = 31.0 (scratch_1).("7") = 42.0 (scratch_1).("8") = 1.0 (scratch_1).("9") = 10.0 (scratch_1).("length") = 10.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = 2.0 (scratch_1).("2") = 3.0 (scratch_1).("3") = 4.0 (scratch_1).("4") = 5.0 (scratch_1).("length") = 5.0 scratch_2 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_1 (scratch_3).("length") = 1.0 scratch_4 = scratch_2 ⌜⋆⌝ "Cycle"(scratch_2, scratch_3) merge scratch_5 = toObj scratch_4 scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = 10.0 (scratch_6).("length") = 1.0 scratch_7 = scratch_5 ⌜⋆⌝ "Take"(scratch_5, scratch_6) merge scratch_8 = toObj scratch_7 scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("length") = 0.0 scratch_10 = scratch_8 ⌜⋆⌝ "ToArray"(scratch_8, scratch_9) merge (`window`0).("actual") = scratch_10 scratch_0 = toObj `window`0 ⌜⋆⌝ "actual" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = scratch_0 ⌜⋆⌝ tostr 0.0 (scratch_1).("length") = 1.0 scratch_2 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_1) merge scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = 2.0 (scratch_1).("2") = 3.0 (scratch_1).("3") = 4.0 (scratch_1).("4") = 5.0 (scratch_1).("5") = 1.0 (scratch_1).("6") = 2.0 (scratch_1).("7") = 3.0 (scratch_1).("8") = 4.0 (scratch_1).("9") = 5.0 (scratch_1).("length") = 10.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge 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 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = "Cycle" (scratch_3).("1") = scratch_0 (scratch_3).("length") = 2.0 scratch_4 = `window`0 ⌜⋆⌝ "test"(`window`0, scratch_3) merge scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (6) in :RETURN:: scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "Empty"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "ToArray"(scratch_3, scratch_4) merge (`window`0).("actual") = scratch_5 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("length") = 0.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge 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 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = "Empty" (scratch_3).("1") = scratch_0 (scratch_3).("length") = 2.0 scratch_4 = `window`0 ⌜⋆⌝ "test"(`window`0, scratch_3) merge scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (11) in :RETURN:: scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = "temp" (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "From"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "ToArray"(scratch_3, scratch_4) merge (`window`0).("actual") = scratch_5 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = "t" (scratch_1).("1") = "e" (scratch_1).("2") = "m" (scratch_1).("3") = "p" (scratch_1).("length") = 4.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = 3.0 (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "From"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "ToArray"(scratch_3, scratch_4) merge (`window`0).("actual") = scratch_5 scratch_0 = toObj `window`0 ⌜⋆⌝ "actual" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = scratch_0 ⌜⋆⌝ tostr 0.0 (scratch_1).("length") = 1.0 scratch_2 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_1) merge scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 3.0 (scratch_1).("length") = 1.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = 2.0 (scratch_1).("2") = 3.0 (scratch_1).("3") = 4.0 (scratch_1).("4") = 5.0 (scratch_1).("length") = 5.0 scratch_2 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = scratch_1 (scratch_3).("length") = 1.0 scratch_4 = scratch_2 ⌜⋆⌝ "From"(scratch_2, scratch_3) merge scratch_5 = toObj scratch_4 scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("length") = 0.0 scratch_7 = scratch_5 ⌜⋆⌝ "ToArray"(scratch_5, scratch_6) merge (`window`0).("actual") = scratch_7 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = 2.0 (scratch_1).("2") = 3.0 (scratch_1).("3") = 4.0 (scratch_1).("4") = 5.0 (scratch_1).("length") = 5.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge scratch_0 = newfun (0.0) (`self`14, arguments) => :RETURN:: decl `dummy`2 = null in `dummy`2 = undef 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 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_4 = new `objectVar`12(scratch_3) (scratch_4).("foo") = "bar" (scratch_4).("func") = scratch_0 scratch_5 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_6 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_6).("0") = scratch_4 (scratch_6).("length") = 1.0 scratch_7 = scratch_5 ⌜⋆⌝ "From"(scratch_5, scratch_6) merge scratch_8 = toObj scratch_7 scratch_9 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_9).("length") = 0.0 scratch_10 = scratch_8 ⌜⋆⌝ "ToArray"(scratch_8, scratch_9) merge (`window`0).("actual") = scratch_10 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `objectVar`12(scratch_0) (scratch_1).("Key") = "foo" (scratch_1).("Value") = "bar" scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("length") = 0.0 scratch_3 = new `arrayVar`3(scratch_2) merge (scratch_3).("0") = scratch_1 (scratch_3).("length") = 1.0 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_4).("1") = scratch_3 (scratch_4).("length") = 2.0 scratch_5 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_4) merge 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 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = "From" (scratch_3).("1") = scratch_0 (scratch_3).("length") = 2.0 scratch_4 = `window`0 ⌜⋆⌝ "test"(`window`0, scratch_3) merge scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (6) in :RETURN:: scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = "hoge" (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Return"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "ToArray"(scratch_3, scratch_4) merge (`window`0).("actual") = scratch_5 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = "hoge" (scratch_1).("length") = 1.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge 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 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = "Return" (scratch_3).("1") = scratch_0 (scratch_3).("length") = 2.0 scratch_4 = `window`0 ⌜⋆⌝ "test"(`window`0, scratch_3) merge scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (6) in :RETURN:: scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = 10.0 (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "Range"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "ToArray"(scratch_3, scratch_4) merge (`window`0).("actual") = scratch_5 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = 2.0 (scratch_1).("2") = 3.0 (scratch_1).("3") = 4.0 (scratch_1).("4") = 5.0 (scratch_1).("5") = 6.0 (scratch_1).("6") = 7.0 (scratch_1).("7") = 8.0 (scratch_1).("8") = 9.0 (scratch_1).("9") = 10.0 (scratch_1).("length") = 10.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = 5.0 (scratch_1).("2") = 3.0 (scratch_1).("length") = 3.0 scratch_2 = scratch_0 ⌜⋆⌝ "Range"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "ToArray"(scratch_3, scratch_4) merge (`window`0).("actual") = scratch_5 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = 4.0 (scratch_1).("2") = 7.0 (scratch_1).("3") = 10.0 (scratch_1).("4") = 13.0 (scratch_1).("length") = 5.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge 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 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = "Range" (scratch_3).("1") = scratch_0 (scratch_3).("length") = 2.0 scratch_4 = `window`0 ⌜⋆⌝ "test"(`window`0, scratch_3) merge scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (6) in :RETURN:: scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = 10.0 (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "RangeDown"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "ToArray"(scratch_3, scratch_4) merge (`window`0).("actual") = scratch_5 scratch_0 = toObj `window`0 ⌜⋆⌝ "actual" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = scratch_0 ⌜⋆⌝ tostr 0.0 (scratch_1).("length") = 1.0 scratch_2 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_1) merge scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = 0.0 (scratch_1).("2") = ⌞−⌟ 1.0 (scratch_1).("3") = ⌞−⌟ 2.0 (scratch_1).("4") = ⌞−⌟ 3.0 (scratch_1).("5") = ⌞−⌟ 4.0 (scratch_1).("6") = ⌞−⌟ 5.0 (scratch_1).("7") = ⌞−⌟ 6.0 (scratch_1).("8") = ⌞−⌟ 7.0 (scratch_1).("9") = ⌞−⌟ 8.0 (scratch_1).("length") = 10.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = 5.0 (scratch_1).("2") = 3.0 (scratch_1).("length") = 3.0 scratch_2 = scratch_0 ⌜⋆⌝ "RangeDown"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "ToArray"(scratch_3, scratch_4) merge (`window`0).("actual") = scratch_5 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = ⌞−⌟ 2.0 (scratch_1).("2") = ⌞−⌟ 5.0 (scratch_1).("3") = ⌞−⌟ 8.0 (scratch_1).("4") = ⌞−⌟ 11.0 (scratch_1).("length") = 5.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge 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 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = "RangeDown" (scratch_3).("1") = scratch_0 (scratch_3).("length") = 2.0 scratch_4 = `window`0 ⌜⋆⌝ "test"(`window`0, scratch_3) merge scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (6) in :RETURN:: scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = 5.0 (scratch_1).("1") = 10.0 (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "RangeTo"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "ToArray"(scratch_3, scratch_4) merge (`window`0).("actual") = scratch_5 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 5.0 (scratch_1).("1") = 6.0 (scratch_1).("2") = 7.0 (scratch_1).("3") = 8.0 (scratch_1).("4") = 9.0 (scratch_1).("5") = 10.0 (scratch_1).("length") = 6.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = 10.0 (scratch_1).("2") = 3.0 (scratch_1).("length") = 3.0 scratch_2 = scratch_0 ⌜⋆⌝ "RangeTo"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "ToArray"(scratch_3, scratch_4) merge (`window`0).("actual") = scratch_5 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 1.0 (scratch_1).("1") = 4.0 (scratch_1).("2") = 7.0 (scratch_1).("3") = 10.0 (scratch_1).("length") = 4.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = ⌞−⌟ 2.0 (scratch_1).("1") = ⌞−⌟ 8.0 (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "RangeTo"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "ToArray"(scratch_3, scratch_4) merge (`window`0).("actual") = scratch_5 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = ⌞−⌟ 2.0 (scratch_1).("1") = ⌞−⌟ 3.0 (scratch_1).("2") = ⌞−⌟ 4.0 (scratch_1).("3") = ⌞−⌟ 5.0 (scratch_1).("4") = ⌞−⌟ 6.0 (scratch_1).("5") = ⌞−⌟ 7.0 (scratch_1).("6") = ⌞−⌟ 8.0 (scratch_1).("length") = 7.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = ⌞−⌟ 2.0 (scratch_1).("1") = ⌞−⌟ 8.0 (scratch_1).("2") = 2.0 (scratch_1).("length") = 3.0 scratch_2 = scratch_0 ⌜⋆⌝ "RangeTo"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "ToArray"(scratch_3, scratch_4) merge (`window`0).("actual") = scratch_5 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = ⌞−⌟ 2.0 (scratch_1).("1") = ⌞−⌟ 4.0 (scratch_1).("2") = ⌞−⌟ 6.0 (scratch_1).("3") = ⌞−⌟ 8.0 (scratch_1).("length") = 4.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge 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 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = "RangeTo" (scratch_3).("1") = scratch_0 (scratch_3).("length") = 2.0 scratch_4 = `window`0 ⌜⋆⌝ "test"(`window`0, scratch_3) merge scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (9) in :RETURN:: scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = "temp" (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "Repeat"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = 3.0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Take"(scratch_3, scratch_4) merge scratch_6 = toObj scratch_5 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = scratch_6 ⌜⋆⌝ "ToArray"(scratch_6, scratch_7) merge (`window`0).("actual") = scratch_8 scratch_0 = toObj `window`0 ⌜⋆⌝ "actual" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = scratch_0 ⌜⋆⌝ tostr 0.0 (scratch_1).("length") = 1.0 scratch_2 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_1) merge scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = "temp" (scratch_1).("1") = "temp" (scratch_1).("2") = "temp" (scratch_1).("length") = 3.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = "temp" (scratch_1).("1") = 5.0 (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "Repeat"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = scratch_3 ⌜⋆⌝ "ToArray"(scratch_3, scratch_4) merge (`window`0).("actual") = scratch_5 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = "temp" (scratch_1).("1") = "temp" (scratch_1).("2") = "temp" (scratch_1).("3") = "temp" (scratch_1).("4") = "temp" (scratch_1).("length") = 5.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge 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 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = "Repeat" (scratch_3).("1") = scratch_0 (scratch_3).("length") = 2.0 scratch_4 = `window`0 ⌜⋆⌝ "test"(`window`0, scratch_3) merge scratch_0 = newfun (0.0) (`self`14, arguments) => decl fin = undef in scratch (15) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => :RETURN:: jmp :RETURN: "temp" 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 scratch_3 = newfun (0.0) (`self`14, arguments) => :RETURN:: fin = "final" scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_0 (scratch_7).("1") = scratch_3 (scratch_7).("length") = 2.0 scratch_8 = scratch_6 ⌜⋆⌝ "RepeatWithFinalize"(scratch_6, scratch_7) merge scratch_9 = toObj scratch_8 scratch_10 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_10).("0") = 3.0 (scratch_10).("length") = 1.0 scratch_11 = scratch_9 ⌜⋆⌝ "Take"(scratch_9, scratch_10) merge scratch_12 = toObj scratch_11 scratch_13 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_13).("length") = 0.0 scratch_14 = scratch_12 ⌜⋆⌝ "ToArray"(scratch_12, scratch_13) merge (`window`0).("actual") = scratch_14 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = "temp" (scratch_1).("1") = "temp" (scratch_1).("2") = "temp" (scratch_1).("length") = 3.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge scratch_0 = toObj `window`0 ⌜⋆⌝ "actual" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = scratch_0 ⌜⋆⌝ tostr 0.0 (scratch_1).("length") = 1.0 scratch_2 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_1) merge scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("0") = "final" (scratch_0).("1") = fin (scratch_0).("length") = 2.0 scratch_1 = `window`0 ⌜⋆⌝ "equal"(`window`0, scratch_0) merge 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 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = "RepeatWithFinalize" (scratch_3).("1") = scratch_0 (scratch_3).("length") = 2.0 scratch_4 = `window`0 ⌜⋆⌝ "test"(`window`0, scratch_3) merge scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (12) in :RETURN:: scratch_0 = newfun (0.0) (`self`14, arguments) => :RETURN:: jmp :RETURN: "temp" 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 scratch_3 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Generate"(scratch_3, scratch_4) merge scratch_6 = toObj scratch_5 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = 3.0 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "Take"(scratch_6, scratch_7) merge scratch_9 = toObj scratch_8 scratch_10 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_10).("length") = 0.0 scratch_11 = scratch_9 ⌜⋆⌝ "ToArray"(scratch_9, scratch_10) merge (`window`0).("actual") = scratch_11 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = "temp" (scratch_1).("1") = "temp" (scratch_1).("2") = "temp" (scratch_1).("length") = 3.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge scratch_0 = newfun (0.0) (`self`14, arguments) => :RETURN:: jmp :RETURN: "temp" 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 scratch_3 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = scratch_0 (scratch_4).("1") = 5.0 (scratch_4).("length") = 2.0 scratch_5 = scratch_3 ⌜⋆⌝ "Generate"(scratch_3, scratch_4) merge scratch_6 = toObj scratch_5 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = scratch_6 ⌜⋆⌝ "ToArray"(scratch_6, scratch_7) merge (`window`0).("actual") = scratch_8 scratch_0 = toObj `window`0 ⌜⋆⌝ "actual" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = scratch_0 ⌜⋆⌝ tostr 0.0 (scratch_1).("length") = 1.0 scratch_2 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_1) merge scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = "temp" (scratch_1).("1") = "temp" (scratch_1).("2") = "temp" (scratch_1).("3") = "temp" (scratch_1).("4") = "temp" (scratch_1).("length") = 5.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge 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 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = "Generate" (scratch_3).("1") = scratch_0 (scratch_3).("length") = 2.0 scratch_4 = `window`0 ⌜⋆⌝ "test"(`window`0, scratch_3) merge scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (15) in :RETURN:: scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "ToInfinity"(scratch_0, scratch_1) merge scratch_3 = newfun (1.0) (`self`14, arguments) => decl i = arguments ⌜⋆⌝ "0" in scratch (2) in :RETURN:: if isprim i scratch_0 = tonum i else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = i (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge jmp :RETURN: scratch_0 ⌜%⌝ 2.0 ⌜≈⌝ 0.0 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj scratch_2 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_3 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "Where"(scratch_6, scratch_7) merge scratch_9 = toObj scratch_8 scratch_10 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_10).("0") = 10.0 (scratch_10).("length") = 1.0 scratch_11 = scratch_9 ⌜⋆⌝ "Take"(scratch_9, scratch_10) merge scratch_12 = toObj scratch_11 scratch_13 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_13).("length") = 0.0 scratch_14 = scratch_12 ⌜⋆⌝ "ToArray"(scratch_12, scratch_13) merge (`window`0).("actual") = scratch_14 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 0.0 (scratch_1).("1") = 2.0 (scratch_1).("2") = 4.0 (scratch_1).("3") = 6.0 (scratch_1).("4") = 8.0 (scratch_1).("5") = 10.0 (scratch_1).("6") = 12.0 (scratch_1).("7") = 14.0 (scratch_1).("8") = 16.0 (scratch_1).("9") = 18.0 (scratch_1).("length") = 10.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = 101.0 (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "ToInfinity"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = 5.0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Take"(scratch_3, scratch_4) merge scratch_6 = toObj scratch_5 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = scratch_6 ⌜⋆⌝ "ToArray"(scratch_6, scratch_7) merge (`window`0).("actual") = scratch_8 scratch_0 = toObj `window`0 ⌜⋆⌝ "actual" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = scratch_0 ⌜⋆⌝ tostr 0.0 (scratch_1).("length") = 1.0 scratch_2 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_1) merge scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 101.0 (scratch_1).("1") = 102.0 (scratch_1).("2") = 103.0 (scratch_1).("3") = 104.0 (scratch_1).("4") = 105.0 (scratch_1).("length") = 5.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = 101.0 (scratch_1).("1") = 5.0 (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "ToInfinity"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = 5.0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Take"(scratch_3, scratch_4) merge scratch_6 = toObj scratch_5 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = scratch_6 ⌜⋆⌝ "ToArray"(scratch_6, scratch_7) merge (`window`0).("actual") = scratch_8 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 101.0 (scratch_1).("1") = 106.0 (scratch_1).("2") = 111.0 (scratch_1).("3") = 116.0 (scratch_1).("4") = 121.0 (scratch_1).("length") = 5.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge 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 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = "ToInfinity" (scratch_3).("1") = scratch_0 (scratch_3).("length") = 2.0 scratch_4 = `window`0 ⌜⋆⌝ "test"(`window`0, scratch_3) merge scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (15) in :RETURN:: scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "ToNegativeInfinity"(scratch_0, scratch_1) merge scratch_3 = newfun (1.0) (`self`14, arguments) => decl i = arguments ⌜⋆⌝ "0" in scratch (2) in :RETURN:: if isprim i scratch_0 = tonum i else scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = i (scratch_1).("length") = 1.0 scratch_0 = `numberVar`8(`window`0, scratch_1) merge merge jmp :RETURN: scratch_0 ⌜%⌝ 2.0 ⌜≈⌝ 0.0 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("length") = 0.0 scratch_5 = new `objectVar`12(scratch_4) merge (scratch_3).("prototype") = scratch_5 scratch_6 = toObj scratch_2 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = scratch_3 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "Where"(scratch_6, scratch_7) merge scratch_9 = toObj scratch_8 scratch_10 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_10).("0") = 10.0 (scratch_10).("length") = 1.0 scratch_11 = scratch_9 ⌜⋆⌝ "Take"(scratch_9, scratch_10) merge scratch_12 = toObj scratch_11 scratch_13 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_13).("length") = 0.0 scratch_14 = scratch_12 ⌜⋆⌝ "ToArray"(scratch_12, scratch_13) merge (`window`0).("actual") = scratch_14 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 0.0 (scratch_1).("1") = ⌞−⌟ 2.0 (scratch_1).("2") = ⌞−⌟ 4.0 (scratch_1).("3") = ⌞−⌟ 6.0 (scratch_1).("4") = ⌞−⌟ 8.0 (scratch_1).("5") = ⌞−⌟ 10.0 (scratch_1).("6") = ⌞−⌟ 12.0 (scratch_1).("7") = ⌞−⌟ 14.0 (scratch_1).("8") = ⌞−⌟ 16.0 (scratch_1).("9") = ⌞−⌟ 18.0 (scratch_1).("length") = 10.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = 3.0 (scratch_1).("length") = 1.0 scratch_2 = scratch_0 ⌜⋆⌝ "ToNegativeInfinity"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = 10.0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Take"(scratch_3, scratch_4) merge scratch_6 = toObj scratch_5 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = scratch_6 ⌜⋆⌝ "ToArray"(scratch_6, scratch_7) merge (`window`0).("actual") = scratch_8 scratch_0 = toObj `window`0 ⌜⋆⌝ "actual" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = scratch_0 ⌜⋆⌝ tostr 0.0 (scratch_1).("length") = 1.0 scratch_2 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_1) merge scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 3.0 (scratch_1).("1") = 2.0 (scratch_1).("2") = 1.0 (scratch_1).("3") = 0.0 (scratch_1).("4") = ⌞−⌟ 1.0 (scratch_1).("5") = ⌞−⌟ 2.0 (scratch_1).("6") = ⌞−⌟ 3.0 (scratch_1).("7") = ⌞−⌟ 4.0 (scratch_1).("8") = ⌞−⌟ 5.0 (scratch_1).("9") = ⌞−⌟ 6.0 (scratch_1).("length") = 10.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge scratch_0 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = 3.0 (scratch_1).("1") = 5.0 (scratch_1).("length") = 2.0 scratch_2 = scratch_0 ⌜⋆⌝ "ToNegativeInfinity"(scratch_0, scratch_1) merge scratch_3 = toObj scratch_2 scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = 4.0 (scratch_4).("length") = 1.0 scratch_5 = scratch_3 ⌜⋆⌝ "Take"(scratch_3, scratch_4) merge scratch_6 = toObj scratch_5 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("length") = 0.0 scratch_8 = scratch_6 ⌜⋆⌝ "ToArray"(scratch_6, scratch_7) merge (`window`0).("actual") = scratch_8 scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 3.0 (scratch_1).("1") = ⌞−⌟ 2.0 (scratch_1).("2") = ⌞−⌟ 7.0 (scratch_1).("3") = ⌞−⌟ 12.0 (scratch_1).("length") = 4.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge 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 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = "ToNegativeInfinity" (scratch_3).("1") = scratch_0 (scratch_3).("length") = 2.0 scratch_4 = `window`0 ⌜⋆⌝ "test"(`window`0, scratch_3) merge scratch_0 = newfun (0.0) (`self`14, arguments) => scratch (12) in :RETURN:: scratch_0 = newfun (1.0) (`self`14, arguments) => decl x = arguments ⌜⋆⌝ "0" in scratch (6) in :RETURN:: 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 scratch_0 scratch_2 = scratch_0 else scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("length") = 0.0 scratch_2 = scratch_0 ⌜⋆⌝ "toString"(scratch_0, scratch_3) merge merge if isprim scratch_2 scratch_4 = scratch_2 else throw "TypeError" merge if typeof scratch_4 ⌜≡⌝ "string" scratch_5 = scratch_4 ⌜++⌝ tostr 3.0 else scratch_5 = tonum scratch_4 ⌜+⌝ 3.0 merge jmp :RETURN: scratch_5 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 scratch_3 = toObj `window`0 ⌜⋆⌝ "Enumerable" scratch_4 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_4).("0") = 5.0 (scratch_4).("1") = scratch_0 (scratch_4).("length") = 2.0 scratch_5 = scratch_3 ⌜⋆⌝ "Unfold"(scratch_3, scratch_4) merge scratch_6 = toObj scratch_5 scratch_7 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_7).("0") = 5.0 (scratch_7).("length") = 1.0 scratch_8 = scratch_6 ⌜⋆⌝ "Take"(scratch_6, scratch_7) merge scratch_9 = toObj scratch_8 scratch_10 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_10).("length") = 0.0 scratch_11 = scratch_9 ⌜⋆⌝ "ToArray"(scratch_9, scratch_10) merge (`window`0).("actual") = scratch_11 scratch_0 = toObj `window`0 ⌜⋆⌝ "actual" scratch_1 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_1).("0") = scratch_0 ⌜⋆⌝ tostr 0.0 (scratch_1).("length") = 1.0 scratch_2 = `window`0 ⌜⋆⌝ "print"(`window`0, scratch_1) merge scratch_0 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_0).("length") = 0.0 scratch_1 = new `arrayVar`3(scratch_0) merge (scratch_1).("0") = 5.0 (scratch_1).("1") = 8.0 (scratch_1).("2") = 11.0 (scratch_1).("3") = 14.0 (scratch_1).("4") = 17.0 (scratch_1).("length") = 5.0 scratch_2 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_2).("0") = `window`0 ⌜⋆⌝ "actual" (scratch_2).("1") = scratch_1 (scratch_2).("length") = 2.0 scratch_3 = `window`0 ⌜⋆⌝ "deepEqual"(`window`0, scratch_2) merge 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 scratch_3 = new `argumentsVar`11(`dummyAddressVar`13) merge (scratch_3).("0") = "Unfold" (scratch_3).("1") = scratch_0 (scratch_3).("length") = 2.0 scratch_4 = `window`0 ⌜⋆⌝ "test"(`window`0, scratch_3) merge