Test retrieving scope information when pausing in wasm functions
Calling instantiate function.
Waiting for wasm script to be parsed.
Got wasm script!
Setting breakpoint on first instruction of second function
{
    columnNumber : 147
    lineNumber : 0
    scriptId : <scriptId>
}
Paused:
Script wasm://wasm/c723f83a byte offset 147: Wasm opcode 0x41 (kExprI32Const)
Scope:
at func (0:147):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 4 (i32)
   var1: 0 (i32)
   i64_local: 0 (i64)
   unicode☼f64: 0 (f64)
   var6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 149: Wasm opcode 0x21 (kExprLocalSet)
Scope:
at func (0:149):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 4 (i32)
   var1: 0 (i32)
   i64_local: 0 (i64)
   unicode☼f64: 0 (f64)
   var6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
   0: 11 (i32)
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 151: Wasm opcode 0x41 (kExprI32Const)
Scope:
at func (0:151):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 0 (i32)
   i64_local: 0 (i64)
   unicode☼f64: 0 (f64)
   var6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 153: Wasm opcode 0x21 (kExprLocalSet)
Scope:
at func (0:153):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 0 (i32)
   i64_local: 0 (i64)
   unicode☼f64: 0 (f64)
   var6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
   0: 47 (i32)
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 155: Wasm opcode 0x42 (kExprI64Const)
Scope:
at func (0:155):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 47 (i32)
   i64_local: 0 (i64)
   unicode☼f64: 0 (f64)
   var6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 166: Wasm opcode 0x21 (kExprLocalSet)
Scope:
at func (0:166):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 47 (i32)
   i64_local: 0 (i64)
   unicode☼f64: 0 (f64)
   var6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
   0: 9223372036854775807 (i64)
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 168: Wasm opcode 0x42 (kExprI64Const)
Scope:
at func (0:168):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 47 (i32)
   i64_local: 9223372036854775807 (i64)
   unicode☼f64: 0 (f64)
   var6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 179: Wasm opcode 0x21 (kExprLocalSet)
Scope:
at func (0:179):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 47 (i32)
   i64_local: 9223372036854775807 (i64)
   unicode☼f64: 0 (f64)
   var6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
   0: -9223372036854775808 (i64)
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 181: Wasm opcode 0x41 (kExprI32Const)
Scope:
at func (0:181):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 47 (i32)
   i64_local: -9223372036854775808 (i64)
   unicode☼f64: 0 (f64)
   var6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 183: Wasm opcode 0xb8 (kExprF64UConvertI32)
Scope:
at func (0:183):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 47 (i32)
   i64_local: -9223372036854775808 (i64)
   unicode☼f64: 0 (f64)
   var6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
   0: 1 (i32)
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 184: Wasm opcode 0x41 (kExprI32Const)
Scope:
at func (0:184):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 47 (i32)
   i64_local: -9223372036854775808 (i64)
   unicode☼f64: 0 (f64)
   var6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
   0: 1 (f64)
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 186: Wasm opcode 0xb8 (kExprF64UConvertI32)
Scope:
at func (0:186):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 47 (i32)
   i64_local: -9223372036854775808 (i64)
   unicode☼f64: 0 (f64)
   var6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
   0: 1 (f64)
   1: 7 (i32)
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 187: Wasm opcode 0xa3 (kExprF64Div)
Scope:
at func (0:187):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 47 (i32)
   i64_local: -9223372036854775808 (i64)
   unicode☼f64: 0 (f64)
   var6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
   0: 1 (f64)
   1: 7 (f64)
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 188: Wasm opcode 0x21 (kExprLocalSet)
Scope:
at func (0:188):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 47 (i32)
   i64_local: -9223372036854775808 (i64)
   unicode☼f64: 0 (f64)
   var6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
   0: 0.14285714285714285 (f64)
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 190: Wasm opcode 0x41 (kExprI32Const)
Scope:
at func (0:190):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 47 (i32)
   i64_local: -9223372036854775808 (i64)
   unicode☼f64: 0.14285714285714285 (f64)
   var6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 192: Wasm opcode 0xfd (kSimdPrefix)
Scope:
at func (0:192):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 47 (i32)
   i64_local: -9223372036854775808 (i64)
   unicode☼f64: 0.14285714285714285 (f64)
   var6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
   0: 23 (i32)
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 194: Wasm opcode 0x21 (kExprLocalSet)
Scope:
at func (0:194):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 47 (i32)
   i64_local: -9223372036854775808 (i64)
   unicode☼f64: 0.14285714285714285 (f64)
   var6: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
   0: 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00  (v128)
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 196: Wasm opcode 0x41 (kExprI32Const)
Scope:
at func (0:196):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 47 (i32)
   i64_local: -9223372036854775808 (i64)
   unicode☼f64: 0.14285714285714285 (f64)
   var6: 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 198: Wasm opcode 0xb3 (kExprF32UConvertI32)
Scope:
at func (0:198):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 47 (i32)
   i64_local: -9223372036854775808 (i64)
   unicode☼f64: 0.14285714285714285 (f64)
   var6: 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
   0: 21 (i32)
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 199: Wasm opcode 0x21 (kExprLocalSet)
Scope:
at func (0:199):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 47 (i32)
   i64_local: -9223372036854775808 (i64)
   unicode☼f64: 0.14285714285714285 (f64)
   var6: 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00  (v128)
   var7: 0 (f32)
 - scope (wasm-expression-stack):
   0: 21 (f32)
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 201: Wasm opcode 0x41 (kExprI32Const)
Scope:
at func (0:201):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 47 (i32)
   i64_local: -9223372036854775808 (i64)
   unicode☼f64: 0.14285714285714285 (f64)
   var6: 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00  (v128)
   var7: 21 (f32)
 - scope (wasm-expression-stack):
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 203: Wasm opcode 0x24 (kExprGlobalSet)
Scope:
at func (0:203):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 47 (i32)
   i64_local: -9223372036854775808 (i64)
   unicode☼f64: 0.14285714285714285 (f64)
   var6: 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00  (v128)
   var7: 21 (f32)
 - scope (wasm-expression-stack):
   0: 15 (i32)
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 0 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 205: Wasm opcode 0x0b (kExprEnd)
Scope:
at func (0:205):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 15 (i32)
 - scope (local):
   0: 0 (f64)
   i32Arg: 11 (i32)
   var1: 47 (i32)
   i64_local: -9223372036854775808 (i64)
   unicode☼f64: 0.14285714285714285 (f64)
   var6: 17 00 00 00 17 00 00 00 17 00 00 00 17 00 00 00  (v128)
   var7: 21 (f32)
 - scope (wasm-expression-stack):
at call_func (0:132):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 15 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
Script wasm://wasm/c723f83a byte offset 134: Wasm opcode 0x0b (kExprEnd)
Scope:
at call_func (0:134):
 - scope (module):
   instance: exports: "exported_global" (Global), "exported_memory" (Memory), "exported_table" (Table), "main" (Function)
   exported_memory: Uint8Array(65536)
   globals: "exported_global": 15 (i32)
 - scope (local):
   var0: 4 (i32)
   var1: 7.199999809265137 (f32)
 - scope (wasm-expression-stack):
at (anonymous) (0:17):
 - scope (global):
   -- skipped globals

Paused:
instance.exports.main(4)

Scope:
at (anonymous) (1:31):
 - scope (global):
   -- skipped globals

exports.main returned. Test finished.
