$f9fa6696 block-scoping.js:13:1
  Registers: 11
  Blocks:    1
  Constants:
    [0] = Undefined

block0:
  [   0] GetGlobal dst:reg6, `console`
  [  10] GetById dst:reg7, base:reg6, `log` (console.log)
  [  28] GetGlobal dst:reg9, `closureOverBlockScope`
  [  38] Call dst:reg8, callee:reg9, this_value:Undefined, closureOverBlockScope
  [  58] Call dst:reg5, callee:reg7, this_value:reg6, console.log, arguments:[reg8]
  [  80] GetGlobal dst:reg6, `console`
  [  90] GetById dst:reg8, base:reg6, `log` (console.log)
  [  a8] GetGlobal dst:reg10, `breakThroughBlockScopes`
  [  b8] Call dst:reg9, callee:reg10, this_value:Undefined, breakThroughBlockScopes
  [  d8] Call dst:reg7, callee:reg8, this_value:reg6, console.log, arguments:[reg9]
  [ 100] End value:reg7


closureOverBlockScope$61104af2 block-scoping.js:2:15
  Registers: 10
  Blocks:    1
  Locals:    fns~0
  Constants:
    [0] = Int32(1)
    [1] = Int32(2)
    [2] = Int32(0)

block0:
  [   0] GetLexicalEnvironment dst:reg4
  [   8] NewArray dst:fns~0
  [  18] CreateLexicalEnvironment dst:reg5, parent:reg4, capacity:0, is_catch_environment:false
  [  30] CreateMutableBinding environment:reg5, `x`, can_be_deleted:false
  [  40] InitializeLexicalBinding `x`, src:Int32(1)
  [  58] GetById dst:reg7, base:fns~0, `push` (fns.push)
  [  70] Mov dst:reg8, src:fns~0
  [  80] NewFunction dst:reg9, shared_function_data_index:0
  [  98] Call dst:reg6, callee:reg7, this_value:reg8, fns.push, arguments:[reg9]
  [  c0] SetLexicalEnvironment environment:reg4
  [  c8] CreateLexicalEnvironment dst:reg5, parent:reg4, capacity:0, is_catch_environment:false
  [  e0] CreateMutableBinding environment:reg5, `y`, can_be_deleted:false
  [  f0] InitializeLexicalBinding `y`, src:Int32(2)
  [ 108] GetById dst:reg7, base:fns~0, `push` (fns.push)
  [ 120] Mov dst:reg8, src:fns~0
  [ 130] NewFunction dst:reg9, shared_function_data_index:1
  [ 148] Call dst:reg6, callee:reg7, this_value:reg8, fns.push, arguments:[reg9]
  [ 170] SetLexicalEnvironment environment:reg4
  [ 178] GetByValue dst:reg6, base:fns~0, property:Int32(0)
  [ 190] Call dst:reg5, callee:reg6, this_value:fns~0, fns[0]
  [ 1b0] GetByValue dst:reg7, base:fns~0, property:Int32(1)
  [ 1c8] Call dst:reg6, callee:reg7, this_value:fns~0, fns[1]
  [ 1e8] Add dst:reg7, lhs:reg5, rhs:reg6
  [ 1f8] Return value:reg7


$cff4e98a block-scoping.js:5:18
  Registers: 6
  Blocks:    1

block0:
  [   0] DynamicGetBinding dst:reg5, `x`
  [  10] Return value:reg5


$b7c63ac6 block-scoping.js:9:18
  Registers: 6
  Blocks:    1

block0:
  [   0] DynamicGetBinding dst:reg5, `y`
  [  10] Return value:reg5


breakThroughBlockScopes$3fb5dfc7 block-scoping.js:16:5
  Registers: 8
  Blocks:    7
  Locals:    f~0, i~1, result~2
  Constants:
    [0] = Undefined
    [1] = Int32(0)
    [2] = Int32(3)
    [3] = Int32(1)

block0:
  [   0] GetLexicalEnvironment dst:reg4
  [   8] Mov2 dst1:result~2, src1:Undefined, dst2:i~1, src2:Int32(0)
  [  20] Jump target:block3

block1:
  [  28] CreateLexicalEnvironment dst:reg5, parent:reg4, capacity:0, is_catch_environment:false
  [  40] CreateMutableBinding environment:reg5, `x`, can_be_deleted:false
  [  50] InitializeLexicalBinding `x`, src:i~1
  [  68] NewFunction dst:f~0, shared_function_data_index:0 (f)
  [  80] GetBinding dst:reg6, `x`
  [  98] JumpGreaterThan lhs:reg6, rhs:Int32(1), true_target:block5, false_target:block6

block2:
  [  b0] PostfixIncrement dst:reg5, src:i~1

block3:
  [  c0] JumpLessThan lhs:i~1, rhs:Int32(3), true_target:block1, false_target:block4

block4:
  [  d8] Call dst:reg5, callee:result~2, this_value:Undefined, result
  [  f8] Return value:reg5

block5:
  [ 100] Mov dst:result~2, src:f~0
  [ 110] SetLexicalEnvironment environment:reg4
  [ 118] Jump target:block4

block6:
  [ 120] SetLexicalEnvironment environment:reg4
  [ 128] Jump target:block2


f$63b62772 block-scoping.js:20:21
  Registers: 6
  Blocks:    1

block0:
  [   0] DynamicGetBinding dst:reg5, `x`
  [  10] Return value:reg5


3
2
