From e84d8f387bd51570eb32d17412c7210e636d937d Mon Sep 17 00:00:00 2001 From: Sam Clegg Date: Thu, 2 May 2024 11:05:35 -0700 Subject: [PATCH] Fix validation rules for memory.copy/fill/init Also, update auto-generated test to cover 64-bit memories --- interpreter/valid/valid.ml | 12 +- test/core/memory_copy.wast | 5574 +++++++++++++++++++++++++++++ test/core/memory_fill.wast | 682 ++++ test/core/memory_init.wast | 987 ++++- test/meta/common.js | 16 +- test/meta/generate_memory_copy.js | 1305 +++---- test/meta/generate_memory_fill.js | 165 +- test/meta/generate_memory_init.js | 298 +- 8 files changed, 8136 insertions(+), 903 deletions(-) diff --git a/interpreter/valid/valid.ml b/interpreter/valid/valid.ml index 312264481..a638a07b5 100644 --- a/interpreter/valid/valid.ml +++ b/interpreter/valid/valid.ml @@ -397,17 +397,17 @@ let rec check_instr (c : context) (e : instr) (s : infer_result_type) : op_type [value_type_of_index_type it] --> [value_type_of_index_type it] | MemoryFill -> - ignore (memory c (0l @@ e.at)); - [NumType I32Type; NumType I32Type; NumType I32Type] --> [] + let MemoryType (_, it) = memory c (0l @@ e.at) in + [value_type_of_index_type it; NumType I32Type; value_type_of_index_type it] --> [] | MemoryCopy -> - ignore (memory c (0l @@ e.at)); - [NumType I32Type; NumType I32Type; NumType I32Type] --> [] + let MemoryType (_, it) = memory c (0l @@ e.at) in + [value_type_of_index_type it; value_type_of_index_type it; value_type_of_index_type it] --> [] | MemoryInit x -> - ignore (memory c (0l @@ e.at)); + let MemoryType (_, it) = memory c (0l @@ e.at) in ignore (data c x); - [NumType I32Type; NumType I32Type; NumType I32Type] --> [] + [value_type_of_index_type it; value_type_of_index_type it; value_type_of_index_type it] --> [] | DataDrop x -> ignore (data c x); diff --git a/test/core/memory_copy.wast b/test/core/memory_copy.wast index 472995d79..680bba5a8 100644 --- a/test/core/memory_copy.wast +++ b/test/core/memory_copy.wast @@ -5576,3 +5576,5577 @@ (i32.const -1)) (assert_return (invoke "checkRange" (i32.const 64834) (i32.const 65536) (i32.const 0)) (i32.const -1)) + +(module + (memory (export "memory0") i64 1 1) + (data (i64.const 2) "\03\01\04\01") + (data (i64.const 12) "\07\05\02\03\06") + (func (export "test") + (nop)) + (func (export "load8_u") (param i64) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 5)) +(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 2)) +(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 6)) +(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") i64 1 1) + (data (i64.const 2) "\03\01\04\01") + (data (i64.const 12) "\07\05\02\03\06") + (func (export "test") + (memory.copy (i64.const 13) (i64.const 2) (i64.const 3))) + (func (export "load8_u") (param i64) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 4)) +(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 6)) +(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") i64 1 1) + (data (i64.const 2) "\03\01\04\01") + (data (i64.const 12) "\07\05\02\03\06") + (func (export "test") + (memory.copy (i64.const 25) (i64.const 15) (i64.const 2))) + (func (export "load8_u") (param i64) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 5)) +(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 2)) +(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 6)) +(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 6)) +(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") i64 1 1) + (data (i64.const 2) "\03\01\04\01") + (data (i64.const 12) "\07\05\02\03\06") + (func (export "test") + (memory.copy (i64.const 13) (i64.const 25) (i64.const 3))) + (func (export "load8_u") (param i64) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 6)) +(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") i64 1 1) + (data (i64.const 2) "\03\01\04\01") + (data (i64.const 12) "\07\05\02\03\06") + (func (export "test") + (memory.copy (i64.const 20) (i64.const 22) (i64.const 4))) + (func (export "load8_u") (param i64) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 5)) +(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 2)) +(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 6)) +(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") i64 1 1) + (data (i64.const 2) "\03\01\04\01") + (data (i64.const 12) "\07\05\02\03\06") + (func (export "test") + (memory.copy (i64.const 25) (i64.const 1) (i64.const 3))) + (func (export "load8_u") (param i64) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 5)) +(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 2)) +(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 6)) +(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") i64 1 1) + (data (i64.const 2) "\03\01\04\01") + (data (i64.const 12) "\07\05\02\03\06") + (func (export "test") + (memory.copy (i64.const 10) (i64.const 12) (i64.const 7))) + (func (export "load8_u") (param i64) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 7)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 5)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 2)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 6)) +(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") i64 1 1) + (data (i64.const 2) "\03\01\04\01") + (data (i64.const 12) "\07\05\02\03\06") + (func (export "test") + (memory.copy (i64.const 12) (i64.const 10) (i64.const 7))) + (func (export "load8_u") (param i64) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 7)) +(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 5)) +(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 2)) +(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 6)) +(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 0) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 65516) (i32.const 0) (i32.const 40)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 19)) +(assert_return (invoke "load8_u" (i32.const 218)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 417)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 616)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 815)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1014)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1213)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1412)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1611)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1810)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2009)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2208)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2407)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2606)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2805)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3004)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3203)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3402)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3601)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3800)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3999)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65490)) (i32.const 0)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 0) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13\14") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 65515) (i32.const 0) (i32.const 39)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 2)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 3)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 5)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 6)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 7)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 8)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 9)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 10)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 11)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 12)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 13)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 14)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 15)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 16)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 17)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 18)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 19)) (i32.const 19)) +(assert_return (invoke "load8_u" (i32.const 20)) (i32.const 20)) +(assert_return (invoke "load8_u" (i32.const 219)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 418)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 617)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 816)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1015)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1214)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1413)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1612)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1811)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2010)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2209)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2408)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2607)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2806)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3005)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3204)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3403)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3602)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3801)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4000)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4199)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4398)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4597)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4796)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4995)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5194)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5393)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5592)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5791)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5990)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6189)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6388)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6587)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6786)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6985)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7184)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7383)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7582)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7781)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7980)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8179)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8378)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8577)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8776)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8975)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9174)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9373)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9572)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9771)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9970)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10169)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10368)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10567)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10766)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10965)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11164)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11363)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11562)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11761)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11960)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12159)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12358)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12557)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12756)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12955)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13154)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13353)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13552)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13751)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13950)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14149)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14348)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14547)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14746)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14945)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15144)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15343)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15542)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15741)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15940)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16139)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16338)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16537)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16736)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16935)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17134)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17333)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17532)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17731)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17930)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18129)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18328)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18527)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18726)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18925)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19124)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19323)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19522)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19721)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19920)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20119)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20318)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20517)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20716)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20915)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21114)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21313)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21512)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21711)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21910)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22109)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22308)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22507)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22706)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22905)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23104)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23303)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23502)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23701)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23900)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24099)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24298)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24497)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24696)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24895)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25094)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25293)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25492)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25691)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25890)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26089)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26288)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26487)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26686)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26885)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27084)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27283)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27482)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27681)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27880)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28079)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28278)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28477)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28676)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28875)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29074)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29273)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29472)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29671)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29870)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30069)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30268)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30467)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30666)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30865)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31064)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31263)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31462)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31661)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31860)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32059)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32258)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32457)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32656)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32855)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33054)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33253)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33452)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33651)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33850)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34049)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34248)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34447)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34646)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34845)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35044)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35243)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35442)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35641)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35840)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36039)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36238)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36437)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36636)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36835)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37034)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37233)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37432)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37631)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37830)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38029)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38228)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38427)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38626)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38825)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39024)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39223)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39422)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39621)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39820)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40019)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40218)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40417)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40616)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40815)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41014)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41213)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41412)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41611)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41810)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42009)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42208)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42407)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42606)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42805)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43004)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43203)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43402)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43601)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43800)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43999)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65491)) (i32.const 0)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 0) (i32.const 65516) (i32.const 40)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 65515) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13\14") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 0) (i32.const 65515) (i32.const 39)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 19)) +(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 20)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 65486) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 65516) (i32.const 65486) (i32.const 40)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65487)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 65488)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 65489)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 65490)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 65491)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 65492)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 65493)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 65494)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 65495)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 65496)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 65497)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 65498)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 65499)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 65500)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 65501)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 65502)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 65503)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 65504)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 65505)) (i32.const 19)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 65486) (i32.const 65516) (i32.const 40)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 65506) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 65516) (i32.const 65506) (i32.const 40)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65507)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 65508)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 65509)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 65510)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 65511)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 65512)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 65513)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 65514)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 65515)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 19)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 65506) (i32.const 65516) (i32.const 40)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 65516) (i32.const 65516) (i32.const 40)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19)) + +(module + (memory (export "mem") 1 ) + (data (i32.const 65516) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 0) (i32.const 65516) (i32.const 4294963200)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61490)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61689)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61888)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62087)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62286)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62485)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62684)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62883)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63082)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63281)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63480)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63679)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63878)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64077)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64276)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64475)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64674)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64873)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65072)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65271)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65470)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65517)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 65518)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 65519)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 65520)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 65521)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 65522)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 65523)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 65524)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 65525)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 65526)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 65527)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 65528)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 65529)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 65530)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 65531)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 65532)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 65533)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 65534)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 65535)) (i32.const 19)) + +(module + (memory (export "mem") 1 1 ) + (data (i32.const 61440) "\00\01\02\03\04\05\06\07\08\09\0a\0b\0c\0d\0e\0f\10\11\12\13") + (func (export "run") (param $targetOffs i32) (param $srcOffs i32) (param $len i32) + (memory.copy (local.get $targetOffs) (local.get $srcOffs) (local.get $len))) + (func (export "load8_u") (param i32) (result i32) + (i32.load8_u (local.get 0)))) + +(assert_trap (invoke "run" (i32.const 65516) (i32.const 61440) (i32.const 4294967040)) + "out of bounds memory access") + +(assert_return (invoke "load8_u" (i32.const 198)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 397)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 596)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 795)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 994)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1193)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1392)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1591)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1790)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 1989)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2188)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2387)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2586)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2785)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 2984)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3183)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3382)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3581)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3780)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 3979)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4178)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4377)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4576)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4775)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 4974)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5173)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5372)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5571)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5770)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 5969)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6168)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6367)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6566)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6765)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 6964)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7163)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7362)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7561)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7760)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 7959)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8158)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8357)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8556)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8755)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 8954)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9153)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9352)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9551)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9750)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 9949)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10148)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10347)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10546)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10745)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 10944)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11143)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11342)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11541)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11740)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 11939)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12138)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12337)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12536)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12735)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 12934)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13133)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13332)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13531)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13730)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 13929)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14128)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14327)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14526)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14725)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 14924)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15123)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15322)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15521)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15720)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 15919)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16118)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16317)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16516)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16715)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 16914)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17113)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17312)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17511)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17710)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 17909)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18108)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18307)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18506)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18705)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 18904)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19103)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19302)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19501)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19700)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 19899)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20098)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20297)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20496)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20695)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 20894)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21093)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21292)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21491)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21690)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 21889)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22088)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22287)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22486)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22685)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 22884)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23083)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23282)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23481)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23680)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 23879)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24078)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24277)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24476)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24675)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 24874)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25073)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25272)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25471)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25670)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 25869)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26068)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26267)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26466)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26665)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 26864)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27063)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27262)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27461)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27660)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 27859)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28058)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28257)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28456)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28655)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 28854)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29053)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29252)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29451)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29650)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 29849)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30048)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30247)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30446)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30645)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 30844)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31043)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31242)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31441)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31640)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 31839)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32038)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32237)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32436)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32635)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 32834)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33033)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33232)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33431)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33630)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 33829)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34028)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34227)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34426)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34625)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 34824)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35023)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35222)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35421)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35620)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 35819)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36018)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36217)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36416)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36615)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 36814)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37013)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37212)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37411)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37610)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 37809)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38008)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38207)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38406)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38605)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 38804)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39003)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39202)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39401)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39600)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39799)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 39998)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40197)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40396)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40595)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40794)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 40993)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41192)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41391)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41590)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41789)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 41988)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42187)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42386)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42585)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42784)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 42983)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43182)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43381)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43580)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43779)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 43978)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44177)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44376)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44575)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44774)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 44973)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45172)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45371)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45570)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45769)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 45968)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46167)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46366)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46565)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46764)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 46963)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47162)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47361)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47560)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47759)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 47958)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48157)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48356)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48555)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48754)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 48953)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49152)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49351)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49550)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49749)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 49948)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50147)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50346)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50545)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50744)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 50943)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51142)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51341)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51540)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51739)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 51938)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52137)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52336)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52535)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52734)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 52933)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53132)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53331)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53530)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53729)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 53928)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54127)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54326)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54525)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54724)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 54923)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55122)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55321)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55520)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55719)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 55918)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56117)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56316)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56515)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56714)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 56913)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57112)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57311)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 57908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 58903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 59898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 60893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61440)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61441)) (i32.const 1)) +(assert_return (invoke "load8_u" (i32.const 61442)) (i32.const 2)) +(assert_return (invoke "load8_u" (i32.const 61443)) (i32.const 3)) +(assert_return (invoke "load8_u" (i32.const 61444)) (i32.const 4)) +(assert_return (invoke "load8_u" (i32.const 61445)) (i32.const 5)) +(assert_return (invoke "load8_u" (i32.const 61446)) (i32.const 6)) +(assert_return (invoke "load8_u" (i32.const 61447)) (i32.const 7)) +(assert_return (invoke "load8_u" (i32.const 61448)) (i32.const 8)) +(assert_return (invoke "load8_u" (i32.const 61449)) (i32.const 9)) +(assert_return (invoke "load8_u" (i32.const 61450)) (i32.const 10)) +(assert_return (invoke "load8_u" (i32.const 61451)) (i32.const 11)) +(assert_return (invoke "load8_u" (i32.const 61452)) (i32.const 12)) +(assert_return (invoke "load8_u" (i32.const 61453)) (i32.const 13)) +(assert_return (invoke "load8_u" (i32.const 61454)) (i32.const 14)) +(assert_return (invoke "load8_u" (i32.const 61455)) (i32.const 15)) +(assert_return (invoke "load8_u" (i32.const 61456)) (i32.const 16)) +(assert_return (invoke "load8_u" (i32.const 61457)) (i32.const 17)) +(assert_return (invoke "load8_u" (i32.const 61458)) (i32.const 18)) +(assert_return (invoke "load8_u" (i32.const 61459)) (i32.const 19)) +(assert_return (invoke "load8_u" (i32.const 61510)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61709)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 61908)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62107)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62306)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62505)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62704)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 62903)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63102)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63301)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63500)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63699)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 63898)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64097)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64296)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64495)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64694)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 64893)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65092)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65291)) (i32.const 0)) +(assert_return (invoke "load8_u" (i32.const 65490)) (i32.const 0)) + +(assert_invalid + (module + (func (export "testfn") + (memory.copy (i64.const 10) (i64.const 20) (i64.const 30)))) + "unknown memory 0") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (i32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (i32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (i32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (i32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (f32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (f32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (f32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (f32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (i64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (i64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (i64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (i64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (f64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (f64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (f64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i32.const 10) (f64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (i32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (i32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (i32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (i32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (f32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (f32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (f32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (f32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (i64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (i64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (i64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (i64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (f64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (f64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (f64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f32.const 10) (f64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (i32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (i32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (i32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (i32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (f32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (f32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (f32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (f32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (i64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (i64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (i64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (f64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (f64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (f64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (i64.const 10) (f64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (i32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (i32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (i32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (i32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (f32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (f32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (f32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (f32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (i64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (i64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (i64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (i64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (f64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (f64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (f64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.copy (f64.const 10) (f64.const 20) (f64.const 30)))) + "type mismatch") + + +(module + (memory i64 1 1) + (func (export "test") + (memory.fill (i64.const 10) (i32.const 0x55) (i64.const 10)) + (memory.copy (i64.const 9) (i64.const 10) (i64.const 5))) + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) +) +(invoke "test") + +(assert_return (invoke "checkRange" (i64.const 0) (i64.const 9) (i32.const 0)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 9) (i64.const 20) (i32.const 85)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 20) (i64.const 65536) (i32.const 0)) + (i64.const -1)) + +(module + (memory i64 1 1) + (func (export "test") + (memory.fill (i64.const 10) (i32.const 0x55) (i64.const 10)) + (memory.copy (i64.const 16) (i64.const 15) (i64.const 5))) + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) +) +(invoke "test") + +(assert_return (invoke "checkRange" (i64.const 0) (i64.const 10) (i32.const 0)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 10) (i64.const 21) (i32.const 85)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 21) (i64.const 65536) (i32.const 0)) + (i64.const -1)) + +(module + (memory i64 1 1) + (func (export "test") + (memory.copy (i64.const 0xFF00) (i64.const 0x8000) (i64.const 257)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory i64 1 1) + (func (export "test") + (memory.copy (i64.const 0xFFFFFF00) (i64.const 0x4000) (i64.const 257)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory i64 1 1) + (func (export "test") + (memory.copy (i64.const 0x8000) (i64.const 0xFF00) (i64.const 257)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory i64 1 1) + (func (export "test") + (memory.copy (i64.const 0x4000) (i64.const 0xFFFFFF00) (i64.const 257)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory i64 1 1) + (func (export "test") + (memory.fill (i64.const 0x0000) (i32.const 0x55) (i64.const 0x8000)) + (memory.fill (i64.const 0x8000) (i32.const 0xAA) (i64.const 0x8000)) + (memory.copy (i64.const 0x9000) (i64.const 0x7000) (i64.const 0))) + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) +) +(invoke "test") + +(assert_return (invoke "checkRange" (i64.const 0) (i64.const 32768) (i32.const 85)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 32768) (i64.const 65536) (i32.const 170)) + (i64.const -1)) +(module + (memory i64 1 1) + (func (export "test") + (memory.copy (i64.const 0x10000) (i64.const 0x7000) (i64.const 0)))) +(invoke "test") + +(module + (memory i64 1 1) + (func (export "test") + (memory.copy (i64.const 0x20000) (i64.const 0x7000) (i64.const 0)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory i64 1 1) + (func (export "test") + (memory.copy (i64.const 0x9000) (i64.const 0x10000) (i64.const 0)))) +(invoke "test") + +(module + (memory i64 1 1) + (func (export "test") + (memory.copy (i64.const 0x9000) (i64.const 0x20000) (i64.const 0)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory i64 1 1) + (func (export "test") + (memory.copy (i64.const 0x10000) (i64.const 0x10000) (i64.const 0)))) +(invoke "test") + +(module + (memory i64 1 1) + (func (export "test") + (memory.copy (i64.const 0x20000) (i64.const 0x20000) (i64.const 0)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory i64 1 1) + (func (export "test") + (memory.fill (i64.const 17767) (i32.const 1) (i64.const 1344)) + (memory.fill (i64.const 39017) (i32.const 2) (i64.const 1055)) + (memory.fill (i64.const 56401) (i32.const 3) (i64.const 988)) + (memory.fill (i64.const 37962) (i32.const 4) (i64.const 322)) + (memory.fill (i64.const 7977) (i32.const 5) (i64.const 1994)) + (memory.fill (i64.const 22714) (i32.const 6) (i64.const 3036)) + (memory.fill (i64.const 16882) (i32.const 7) (i64.const 2372)) + (memory.fill (i64.const 43491) (i32.const 8) (i64.const 835)) + (memory.fill (i64.const 124) (i32.const 9) (i64.const 1393)) + (memory.fill (i64.const 2132) (i32.const 10) (i64.const 2758)) + (memory.fill (i64.const 8987) (i32.const 11) (i64.const 3098)) + (memory.fill (i64.const 52711) (i32.const 12) (i64.const 741)) + (memory.fill (i64.const 3958) (i32.const 13) (i64.const 2823)) + (memory.fill (i64.const 49715) (i32.const 14) (i64.const 1280)) + (memory.fill (i64.const 50377) (i32.const 15) (i64.const 1466)) + (memory.fill (i64.const 20493) (i32.const 16) (i64.const 3158)) + (memory.fill (i64.const 47665) (i32.const 17) (i64.const 544)) + (memory.fill (i64.const 12451) (i32.const 18) (i64.const 2669)) + (memory.fill (i64.const 24869) (i32.const 19) (i64.const 2651)) + (memory.fill (i64.const 45317) (i32.const 20) (i64.const 1570)) + (memory.fill (i64.const 43096) (i32.const 21) (i64.const 1691)) + (memory.fill (i64.const 33886) (i32.const 22) (i64.const 646)) + (memory.fill (i64.const 48555) (i32.const 23) (i64.const 1858)) + (memory.fill (i64.const 53453) (i32.const 24) (i64.const 2657)) + (memory.fill (i64.const 30363) (i32.const 25) (i64.const 981)) + (memory.fill (i64.const 9300) (i32.const 26) (i64.const 1807)) + (memory.fill (i64.const 50190) (i32.const 27) (i64.const 487)) + (memory.fill (i64.const 62753) (i32.const 28) (i64.const 530)) + (memory.fill (i64.const 36316) (i32.const 29) (i64.const 943)) + (memory.fill (i64.const 6768) (i32.const 30) (i64.const 381)) + (memory.fill (i64.const 51262) (i32.const 31) (i64.const 3089)) + (memory.fill (i64.const 49729) (i32.const 32) (i64.const 658)) + (memory.fill (i64.const 44540) (i32.const 33) (i64.const 1702)) + (memory.fill (i64.const 33342) (i32.const 34) (i64.const 1092)) + (memory.fill (i64.const 50814) (i32.const 35) (i64.const 1410)) + (memory.fill (i64.const 47594) (i32.const 36) (i64.const 2204)) + (memory.fill (i64.const 54123) (i32.const 37) (i64.const 2394)) + (memory.fill (i64.const 55183) (i32.const 38) (i64.const 250)) + (memory.fill (i64.const 22620) (i32.const 39) (i64.const 2097)) + (memory.fill (i64.const 17132) (i32.const 40) (i64.const 3264)) + (memory.fill (i64.const 54331) (i32.const 41) (i64.const 3299)) + (memory.fill (i64.const 39474) (i32.const 42) (i64.const 2796)) + (memory.fill (i64.const 36156) (i32.const 43) (i64.const 2070)) + (memory.fill (i64.const 35308) (i32.const 44) (i64.const 2763)) + (memory.fill (i64.const 32731) (i32.const 45) (i64.const 312)) + (memory.fill (i64.const 63746) (i32.const 46) (i64.const 192)) + (memory.fill (i64.const 30974) (i32.const 47) (i64.const 596)) + (memory.fill (i64.const 16635) (i32.const 48) (i64.const 501)) + (memory.fill (i64.const 57002) (i32.const 49) (i64.const 686)) + (memory.fill (i64.const 34299) (i32.const 50) (i64.const 385)) + (memory.fill (i64.const 60881) (i32.const 51) (i64.const 903)) + (memory.fill (i64.const 61445) (i32.const 52) (i64.const 2390)) + (memory.fill (i64.const 46972) (i32.const 53) (i64.const 1441)) + (memory.fill (i64.const 25973) (i32.const 54) (i64.const 3162)) + (memory.fill (i64.const 5566) (i32.const 55) (i64.const 2135)) + (memory.fill (i64.const 35977) (i32.const 56) (i64.const 519)) + (memory.fill (i64.const 44892) (i32.const 57) (i64.const 3280)) + (memory.fill (i64.const 46760) (i32.const 58) (i64.const 1678)) + (memory.fill (i64.const 46607) (i32.const 59) (i64.const 3168)) + (memory.fill (i64.const 22449) (i32.const 60) (i64.const 1441)) + (memory.fill (i64.const 58609) (i32.const 61) (i64.const 663)) + (memory.fill (i64.const 32261) (i32.const 62) (i64.const 1671)) + (memory.fill (i64.const 3063) (i32.const 63) (i64.const 721)) + (memory.fill (i64.const 34025) (i32.const 64) (i64.const 84)) + (memory.fill (i64.const 33338) (i32.const 65) (i64.const 2029)) + (memory.fill (i64.const 36810) (i32.const 66) (i64.const 29)) + (memory.fill (i64.const 19147) (i32.const 67) (i64.const 3034)) + (memory.fill (i64.const 12616) (i32.const 68) (i64.const 1043)) + (memory.fill (i64.const 18276) (i32.const 69) (i64.const 3324)) + (memory.fill (i64.const 4639) (i32.const 70) (i64.const 1091)) + (memory.fill (i64.const 16158) (i32.const 71) (i64.const 1997)) + (memory.fill (i64.const 18204) (i32.const 72) (i64.const 2259)) + (memory.fill (i64.const 50532) (i32.const 73) (i64.const 3189)) + (memory.fill (i64.const 11028) (i32.const 74) (i64.const 1968)) + (memory.fill (i64.const 15962) (i32.const 75) (i64.const 1455)) + (memory.fill (i64.const 45406) (i32.const 76) (i64.const 1177)) + (memory.fill (i64.const 54137) (i32.const 77) (i64.const 1568)) + (memory.fill (i64.const 33083) (i32.const 78) (i64.const 1642)) + (memory.fill (i64.const 61028) (i32.const 79) (i64.const 3284)) + (memory.fill (i64.const 51729) (i32.const 80) (i64.const 223)) + (memory.fill (i64.const 4361) (i32.const 81) (i64.const 2171)) + (memory.fill (i64.const 57514) (i32.const 82) (i64.const 1322)) + (memory.fill (i64.const 55724) (i32.const 83) (i64.const 2648)) + (memory.fill (i64.const 24091) (i32.const 84) (i64.const 1045)) + (memory.fill (i64.const 43183) (i32.const 85) (i64.const 3097)) + (memory.fill (i64.const 32307) (i32.const 86) (i64.const 2796)) + (memory.fill (i64.const 3811) (i32.const 87) (i64.const 2010)) + (memory.fill (i64.const 54856) (i32.const 88) (i64.const 0)) + (memory.fill (i64.const 49941) (i32.const 89) (i64.const 2069)) + (memory.fill (i64.const 20411) (i32.const 90) (i64.const 2896)) + (memory.fill (i64.const 33826) (i32.const 91) (i64.const 192)) + (memory.fill (i64.const 9402) (i32.const 92) (i64.const 2195)) + (memory.fill (i64.const 12413) (i32.const 93) (i64.const 24)) + (memory.fill (i64.const 14091) (i32.const 94) (i64.const 577)) + (memory.fill (i64.const 44058) (i32.const 95) (i64.const 2089)) + (memory.fill (i64.const 36735) (i32.const 96) (i64.const 3436)) + (memory.fill (i64.const 23288) (i32.const 97) (i64.const 2765)) + (memory.fill (i64.const 6392) (i32.const 98) (i64.const 830)) + (memory.fill (i64.const 33307) (i32.const 99) (i64.const 1938)) + (memory.fill (i64.const 21941) (i32.const 100) (i64.const 2750)) + (memory.copy (i64.const 59214) (i64.const 54248) (i64.const 2098)) + (memory.copy (i64.const 63026) (i64.const 39224) (i64.const 230)) + (memory.copy (i64.const 51833) (i64.const 23629) (i64.const 2300)) + (memory.copy (i64.const 6708) (i64.const 23996) (i64.const 639)) + (memory.copy (i64.const 6990) (i64.const 33399) (i64.const 1097)) + (memory.copy (i64.const 19403) (i64.const 10348) (i64.const 3197)) + (memory.copy (i64.const 27308) (i64.const 54406) (i64.const 100)) + (memory.copy (i64.const 27221) (i64.const 43682) (i64.const 1717)) + (memory.copy (i64.const 60528) (i64.const 8629) (i64.const 119)) + (memory.copy (i64.const 5947) (i64.const 2308) (i64.const 658)) + (memory.copy (i64.const 4787) (i64.const 51631) (i64.const 2269)) + (memory.copy (i64.const 12617) (i64.const 19197) (i64.const 833)) + (memory.copy (i64.const 11854) (i64.const 46505) (i64.const 3300)) + (memory.copy (i64.const 11376) (i64.const 45012) (i64.const 2281)) + (memory.copy (i64.const 34186) (i64.const 6697) (i64.const 2572)) + (memory.copy (i64.const 4936) (i64.const 1690) (i64.const 1328)) + (memory.copy (i64.const 63164) (i64.const 7637) (i64.const 1670)) + (memory.copy (i64.const 44568) (i64.const 18344) (i64.const 33)) + (memory.copy (i64.const 43918) (i64.const 22348) (i64.const 1427)) + (memory.copy (i64.const 46637) (i64.const 49819) (i64.const 1434)) + (memory.copy (i64.const 63684) (i64.const 8755) (i64.const 834)) + (memory.copy (i64.const 33485) (i64.const 20131) (i64.const 3317)) + (memory.copy (i64.const 40575) (i64.const 54317) (i64.const 3201)) + (memory.copy (i64.const 25812) (i64.const 59254) (i64.const 2452)) + (memory.copy (i64.const 19678) (i64.const 56882) (i64.const 346)) + (memory.copy (i64.const 15852) (i64.const 35914) (i64.const 2430)) + (memory.copy (i64.const 11824) (i64.const 35574) (i64.const 300)) + (memory.copy (i64.const 59427) (i64.const 13957) (i64.const 3153)) + (memory.copy (i64.const 34299) (i64.const 60594) (i64.const 1281)) + (memory.copy (i64.const 8964) (i64.const 12276) (i64.const 943)) + (memory.copy (i64.const 2827) (i64.const 10425) (i64.const 1887)) + (memory.copy (i64.const 43194) (i64.const 43910) (i64.const 738)) + (memory.copy (i64.const 63038) (i64.const 18949) (i64.const 122)) + (memory.copy (i64.const 24044) (i64.const 44761) (i64.const 1755)) + (memory.copy (i64.const 22608) (i64.const 14755) (i64.const 702)) + (memory.copy (i64.const 11284) (i64.const 26579) (i64.const 1830)) + (memory.copy (i64.const 23092) (i64.const 20471) (i64.const 1064)) + (memory.copy (i64.const 57248) (i64.const 54770) (i64.const 2631)) + (memory.copy (i64.const 25492) (i64.const 1025) (i64.const 3113)) + (memory.copy (i64.const 49588) (i64.const 44220) (i64.const 975)) + (memory.copy (i64.const 28280) (i64.const 41722) (i64.const 2336)) + (memory.copy (i64.const 61289) (i64.const 230) (i64.const 2872)) + (memory.copy (i64.const 22480) (i64.const 52506) (i64.const 2197)) + (memory.copy (i64.const 40553) (i64.const 9578) (i64.const 1958)) + (memory.copy (i64.const 29004) (i64.const 20862) (i64.const 2186)) + (memory.copy (i64.const 53029) (i64.const 43955) (i64.const 1037)) + (memory.copy (i64.const 25476) (i64.const 35667) (i64.const 1650)) + (memory.copy (i64.const 58516) (i64.const 45819) (i64.const 1986)) + (memory.copy (i64.const 38297) (i64.const 5776) (i64.const 1955)) + (memory.copy (i64.const 28503) (i64.const 55364) (i64.const 2368)) + (memory.copy (i64.const 62619) (i64.const 18108) (i64.const 1356)) + (memory.copy (i64.const 50149) (i64.const 13861) (i64.const 382)) + (memory.copy (i64.const 16904) (i64.const 36341) (i64.const 1900)) + (memory.copy (i64.const 48098) (i64.const 11358) (i64.const 2807)) + (memory.copy (i64.const 28512) (i64.const 40362) (i64.const 323)) + (memory.copy (i64.const 35506) (i64.const 27856) (i64.const 1670)) + (memory.copy (i64.const 62970) (i64.const 53332) (i64.const 1341)) + (memory.copy (i64.const 14133) (i64.const 46312) (i64.const 644)) + (memory.copy (i64.const 29030) (i64.const 19074) (i64.const 496)) + (memory.copy (i64.const 44952) (i64.const 47577) (i64.const 2784)) + (memory.copy (i64.const 39559) (i64.const 44661) (i64.const 1350)) + (memory.copy (i64.const 10352) (i64.const 29274) (i64.const 1475)) + (memory.copy (i64.const 46911) (i64.const 46178) (i64.const 1467)) + (memory.copy (i64.const 4905) (i64.const 28740) (i64.const 1895)) + (memory.copy (i64.const 38012) (i64.const 57253) (i64.const 1751)) + (memory.copy (i64.const 26446) (i64.const 27223) (i64.const 1127)) + (memory.copy (i64.const 58835) (i64.const 24657) (i64.const 1063)) + (memory.copy (i64.const 61356) (i64.const 38790) (i64.const 766)) + (memory.copy (i64.const 44160) (i64.const 2284) (i64.const 1520)) + (memory.copy (i64.const 32740) (i64.const 47237) (i64.const 3014)) + (memory.copy (i64.const 11148) (i64.const 21260) (i64.const 1011)) + (memory.copy (i64.const 7665) (i64.const 31612) (i64.const 3034)) + (memory.copy (i64.const 18044) (i64.const 12987) (i64.const 3320)) + (memory.copy (i64.const 57306) (i64.const 55905) (i64.const 308)) + (memory.copy (i64.const 24675) (i64.const 16815) (i64.const 1155)) + (memory.copy (i64.const 19900) (i64.const 10115) (i64.const 722)) + (memory.copy (i64.const 2921) (i64.const 5935) (i64.const 2370)) + (memory.copy (i64.const 32255) (i64.const 50095) (i64.const 2926)) + (memory.copy (i64.const 15126) (i64.const 17299) (i64.const 2607)) + (memory.copy (i64.const 45575) (i64.const 28447) (i64.const 2045)) + (memory.copy (i64.const 55149) (i64.const 36113) (i64.const 2596)) + (memory.copy (i64.const 28461) (i64.const 54157) (i64.const 1168)) + (memory.copy (i64.const 47951) (i64.const 53385) (i64.const 3137)) + (memory.copy (i64.const 30646) (i64.const 45155) (i64.const 2649)) + (memory.copy (i64.const 5057) (i64.const 4295) (i64.const 52)) + (memory.copy (i64.const 6692) (i64.const 24195) (i64.const 441)) + (memory.copy (i64.const 32984) (i64.const 27117) (i64.const 3445)) + (memory.copy (i64.const 32530) (i64.const 59372) (i64.const 2785)) + (memory.copy (i64.const 34361) (i64.const 8962) (i64.const 2406)) + (memory.copy (i64.const 17893) (i64.const 54538) (i64.const 3381)) + (memory.copy (i64.const 22685) (i64.const 44151) (i64.const 136)) + (memory.copy (i64.const 59089) (i64.const 7077) (i64.const 1045)) + (memory.copy (i64.const 42945) (i64.const 55028) (i64.const 2389)) + (memory.copy (i64.const 44693) (i64.const 20138) (i64.const 877)) + (memory.copy (i64.const 36810) (i64.const 25196) (i64.const 3447)) + (memory.copy (i64.const 45742) (i64.const 31888) (i64.const 854)) + (memory.copy (i64.const 24236) (i64.const 31866) (i64.const 1377)) + (memory.copy (i64.const 33778) (i64.const 692) (i64.const 1594)) + (memory.copy (i64.const 60618) (i64.const 18585) (i64.const 2987)) + (memory.copy (i64.const 50370) (i64.const 41271) (i64.const 1406)) + ) + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) +) +(invoke "test") + +(assert_return (invoke "checkRange" (i64.const 0) (i64.const 124) (i32.const 0)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 124) (i64.const 1517) (i32.const 9)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 1517) (i64.const 2132) (i32.const 0)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 2132) (i64.const 2827) (i32.const 10)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 2827) (i64.const 2921) (i32.const 92)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 2921) (i64.const 3538) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 3538) (i64.const 3786) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 3786) (i64.const 4042) (i32.const 97)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 4042) (i64.const 4651) (i32.const 99)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 4651) (i64.const 5057) (i32.const 0)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 5057) (i64.const 5109) (i32.const 99)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 5109) (i64.const 5291) (i32.const 0)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 5291) (i64.const 5524) (i32.const 72)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 5524) (i64.const 5691) (i32.const 92)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 5691) (i64.const 6552) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 6552) (i64.const 7133) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 7133) (i64.const 7665) (i32.const 99)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 7665) (i64.const 8314) (i32.const 0)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 8314) (i64.const 8360) (i32.const 62)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 8360) (i64.const 8793) (i32.const 86)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 8793) (i64.const 8979) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 8979) (i64.const 9373) (i32.const 79)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 9373) (i64.const 9518) (i32.const 95)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 9518) (i64.const 9934) (i32.const 59)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 9934) (i64.const 10087) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 10087) (i64.const 10206) (i32.const 5)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 10206) (i64.const 10230) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 10230) (i64.const 10249) (i32.const 41)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 10249) (i64.const 11148) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 11148) (i64.const 11356) (i32.const 74)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 11356) (i64.const 11380) (i32.const 93)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 11380) (i64.const 11939) (i32.const 74)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 11939) (i64.const 12159) (i32.const 68)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 12159) (i64.const 12575) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 12575) (i64.const 12969) (i32.const 79)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 12969) (i64.const 13114) (i32.const 95)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 13114) (i64.const 14133) (i32.const 59)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 14133) (i64.const 14404) (i32.const 76)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 14404) (i64.const 14428) (i32.const 57)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 14428) (i64.const 14458) (i32.const 59)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 14458) (i64.const 14580) (i32.const 32)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 14580) (i64.const 14777) (i32.const 89)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 14777) (i64.const 15124) (i32.const 59)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 15124) (i64.const 15126) (i32.const 36)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 15126) (i64.const 15192) (i32.const 100)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 15192) (i64.const 15871) (i32.const 96)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 15871) (i64.const 15998) (i32.const 95)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 15998) (i64.const 17017) (i32.const 59)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 17017) (i64.const 17288) (i32.const 76)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 17288) (i64.const 17312) (i32.const 57)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 17312) (i64.const 17342) (i32.const 59)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 17342) (i64.const 17464) (i32.const 32)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 17464) (i64.const 17661) (i32.const 89)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 17661) (i64.const 17727) (i32.const 59)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 17727) (i64.const 17733) (i32.const 5)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 17733) (i64.const 17893) (i32.const 96)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 17893) (i64.const 18553) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 18553) (i64.const 18744) (i32.const 42)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 18744) (i64.const 18801) (i32.const 76)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 18801) (i64.const 18825) (i32.const 57)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 18825) (i64.const 18876) (i32.const 59)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 18876) (i64.const 18885) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 18885) (i64.const 18904) (i32.const 41)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 18904) (i64.const 19567) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 19567) (i64.const 20403) (i32.const 96)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 20403) (i64.const 21274) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 21274) (i64.const 21364) (i32.const 100)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 21364) (i64.const 21468) (i32.const 74)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 21468) (i64.const 21492) (i32.const 93)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 21492) (i64.const 22051) (i32.const 74)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 22051) (i64.const 22480) (i32.const 68)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 22480) (i64.const 22685) (i32.const 100)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 22685) (i64.const 22694) (i32.const 68)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 22694) (i64.const 22821) (i32.const 10)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 22821) (i64.const 22869) (i32.const 100)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 22869) (i64.const 24107) (i32.const 97)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 24107) (i64.const 24111) (i32.const 37)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 24111) (i64.const 24236) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 24236) (i64.const 24348) (i32.const 72)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 24348) (i64.const 24515) (i32.const 92)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 24515) (i64.const 24900) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 24900) (i64.const 25136) (i32.const 95)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 25136) (i64.const 25182) (i32.const 85)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 25182) (i64.const 25426) (i32.const 68)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 25426) (i64.const 25613) (i32.const 89)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 25613) (i64.const 25830) (i32.const 96)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 25830) (i64.const 26446) (i32.const 100)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 26446) (i64.const 26517) (i32.const 10)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 26517) (i64.const 27468) (i32.const 92)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 27468) (i64.const 27503) (i32.const 95)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 27503) (i64.const 27573) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 27573) (i64.const 28245) (i32.const 92)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 28245) (i64.const 28280) (i32.const 95)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 28280) (i64.const 29502) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 29502) (i64.const 29629) (i32.const 42)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 29629) (i64.const 30387) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 30387) (i64.const 30646) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 30646) (i64.const 31066) (i32.const 92)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 31066) (i64.const 31131) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 31131) (i64.const 31322) (i32.const 42)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 31322) (i64.const 31379) (i32.const 76)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 31379) (i64.const 31403) (i32.const 57)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 31403) (i64.const 31454) (i32.const 59)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 31454) (i64.const 31463) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 31463) (i64.const 31482) (i32.const 41)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 31482) (i64.const 31649) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 31649) (i64.const 31978) (i32.const 72)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 31978) (i64.const 32145) (i32.const 92)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 32145) (i64.const 32530) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 32530) (i64.const 32766) (i32.const 95)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 32766) (i64.const 32812) (i32.const 85)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 32812) (i64.const 33056) (i32.const 68)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 33056) (i64.const 33660) (i32.const 89)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 33660) (i64.const 33752) (i32.const 59)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 33752) (i64.const 33775) (i32.const 36)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 33775) (i64.const 33778) (i32.const 32)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 33778) (i64.const 34603) (i32.const 9)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 34603) (i64.const 35218) (i32.const 0)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 35218) (i64.const 35372) (i32.const 10)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 35372) (i64.const 35486) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 35486) (i64.const 35605) (i32.const 5)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 35605) (i64.const 35629) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 35629) (i64.const 35648) (i32.const 41)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 35648) (i64.const 36547) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 36547) (i64.const 36755) (i32.const 74)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 36755) (i64.const 36767) (i32.const 93)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 36767) (i64.const 36810) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 36810) (i64.const 36839) (i32.const 100)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 36839) (i64.const 37444) (i32.const 96)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 37444) (i64.const 38060) (i32.const 100)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 38060) (i64.const 38131) (i32.const 10)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 38131) (i64.const 39082) (i32.const 92)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 39082) (i64.const 39117) (i32.const 95)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 39117) (i64.const 39187) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 39187) (i64.const 39859) (i32.const 92)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 39859) (i64.const 39894) (i32.const 95)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 39894) (i64.const 40257) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 40257) (i64.const 40344) (i32.const 89)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 40344) (i64.const 40371) (i32.const 59)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 40371) (i64.const 40804) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 40804) (i64.const 40909) (i32.const 5)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 40909) (i64.const 42259) (i32.const 92)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 42259) (i64.const 42511) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 42511) (i64.const 42945) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 42945) (i64.const 43115) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 43115) (i64.const 43306) (i32.const 42)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 43306) (i64.const 43363) (i32.const 76)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 43363) (i64.const 43387) (i32.const 57)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 43387) (i64.const 43438) (i32.const 59)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 43438) (i64.const 43447) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 43447) (i64.const 43466) (i32.const 41)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 43466) (i64.const 44129) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 44129) (i64.const 44958) (i32.const 96)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 44958) (i64.const 45570) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 45570) (i64.const 45575) (i32.const 92)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 45575) (i64.const 45640) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 45640) (i64.const 45742) (i32.const 42)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 45742) (i64.const 45832) (i32.const 72)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 45832) (i64.const 45999) (i32.const 92)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 45999) (i64.const 46384) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 46384) (i64.const 46596) (i32.const 95)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 46596) (i64.const 46654) (i32.const 92)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 46654) (i64.const 47515) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 47515) (i64.const 47620) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 47620) (i64.const 47817) (i32.const 79)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 47817) (i64.const 47951) (i32.const 95)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 47951) (i64.const 48632) (i32.const 100)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 48632) (i64.const 48699) (i32.const 97)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 48699) (i64.const 48703) (i32.const 37)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 48703) (i64.const 49764) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 49764) (i64.const 49955) (i32.const 42)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 49955) (i64.const 50012) (i32.const 76)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 50012) (i64.const 50036) (i32.const 57)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 50036) (i64.const 50087) (i32.const 59)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 50087) (i64.const 50096) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 50096) (i64.const 50115) (i32.const 41)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 50115) (i64.const 50370) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 50370) (i64.const 51358) (i32.const 92)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 51358) (i64.const 51610) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 51610) (i64.const 51776) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 51776) (i64.const 51833) (i32.const 89)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 51833) (i64.const 52895) (i32.const 100)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 52895) (i64.const 53029) (i32.const 97)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 53029) (i64.const 53244) (i32.const 68)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 53244) (i64.const 54066) (i32.const 100)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 54066) (i64.const 54133) (i32.const 97)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 54133) (i64.const 54137) (i32.const 37)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 54137) (i64.const 55198) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 55198) (i64.const 55389) (i32.const 42)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 55389) (i64.const 55446) (i32.const 76)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 55446) (i64.const 55470) (i32.const 57)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 55470) (i64.const 55521) (i32.const 59)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 55521) (i64.const 55530) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 55530) (i64.const 55549) (i32.const 41)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 55549) (i64.const 56212) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 56212) (i64.const 57048) (i32.const 96)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 57048) (i64.const 58183) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 58183) (i64.const 58202) (i32.const 41)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 58202) (i64.const 58516) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 58516) (i64.const 58835) (i32.const 95)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 58835) (i64.const 58855) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 58855) (i64.const 59089) (i32.const 95)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 59089) (i64.const 59145) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 59145) (i64.const 59677) (i32.const 99)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 59677) (i64.const 60134) (i32.const 0)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 60134) (i64.const 60502) (i32.const 89)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 60502) (i64.const 60594) (i32.const 59)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 60594) (i64.const 60617) (i32.const 36)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 60617) (i64.const 60618) (i32.const 32)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 60618) (i64.const 60777) (i32.const 42)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 60777) (i64.const 60834) (i32.const 76)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 60834) (i64.const 60858) (i32.const 57)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 60858) (i64.const 60909) (i32.const 59)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 60909) (i64.const 60918) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 60918) (i64.const 60937) (i32.const 41)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 60937) (i64.const 61600) (i32.const 83)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 61600) (i64.const 62436) (i32.const 96)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 62436) (i64.const 63307) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 63307) (i64.const 63397) (i32.const 100)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 63397) (i64.const 63501) (i32.const 74)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 63501) (i64.const 63525) (i32.const 93)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 63525) (i64.const 63605) (i32.const 74)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 63605) (i64.const 63704) (i32.const 100)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 63704) (i64.const 63771) (i32.const 97)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 63771) (i64.const 63775) (i32.const 37)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 63775) (i64.const 64311) (i32.const 77)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 64311) (i64.const 64331) (i32.const 26)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 64331) (i64.const 64518) (i32.const 92)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 64518) (i64.const 64827) (i32.const 11)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 64827) (i64.const 64834) (i32.const 26)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 64834) (i64.const 65536) (i32.const 0)) + (i64.const -1)) diff --git a/test/core/memory_fill.wast b/test/core/memory_fill.wast index 98374a158..90c6b799f 100644 --- a/test/core/memory_fill.wast +++ b/test/core/memory_fill.wast @@ -684,3 +684,685 @@ (assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) (i32.const -1)) + +(module + (memory i64 1 1) + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "test") + (memory.fill (i64.const 0xFF00) (i32.const 0x55) (i64.const 256)))) +(invoke "test") + +(assert_return (invoke "checkRange" (i64.const 0) (i64.const 65280) (i32.const 0)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 65280) (i64.const 65536) (i32.const 85)) + (i64.const -1)) +(module + (memory i64 1 1) + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "test") + (memory.fill (i64.const 0xFF00) (i32.const 0x55) (i64.const 257)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory i64 1 1) + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "test") + (memory.fill (i64.const 0xFFFFFF00) (i32.const 0x55) (i64.const 257)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory i64 1 1) + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "test") + (memory.fill (i64.const 0x12) (i32.const 0x55) (i64.const 0)))) +(invoke "test") + +(assert_return (invoke "checkRange" (i64.const 0) (i64.const 65536) (i32.const 0)) + (i64.const -1)) +(module + (memory i64 1 1) + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "test") + (memory.fill (i64.const 0x10000) (i32.const 0x55) (i64.const 0)))) +(invoke "test") + +(module + (memory i64 1 1) + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "test") + (memory.fill (i64.const 0x20000) (i32.const 0x55) (i64.const 0)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory i64 1 1) + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "test") + (memory.fill (i64.const 0x1) (i32.const 0xAA) (i64.const 0xFFFE)))) +(invoke "test") + +(assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 1) (i64.const 65535) (i32.const 170)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 65535) (i64.const 65536) (i32.const 0)) + (i64.const -1)) + +(module + (memory i64 1 1) + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "test") + (memory.fill (i64.const 0x12) (i32.const 0x55) (i64.const 10)) + (memory.fill (i64.const 0x15) (i32.const 0xAA) (i64.const 4)))) +(invoke "test") + +(assert_return (invoke "checkRange" (i64.const 0) (i64.const 18) (i32.const 0)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 18) (i64.const 21) (i32.const 85)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 21) (i64.const 25) (i32.const 170)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 25) (i64.const 28) (i32.const 85)) + (i64.const -1)) +(assert_return (invoke "checkRange" (i64.const 28) (i64.const 65536) (i32.const 0)) + (i64.const -1)) +(assert_invalid + (module + (func (export "testfn") + (memory.fill (i64.const 10) (i32.const 20) (i64.const 30)))) + "unknown memory 0") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (i32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (i32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (i32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (i32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (f32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (f32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (f32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (f32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (i64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (i64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (i64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (i64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (f64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (f64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (f64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i32.const 10) (f64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (i32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (i32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (i32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (i32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (f32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (f32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (f32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (f32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (i64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (i64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (i64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (i64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (f64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (f64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (f64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f32.const 10) (f64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (i32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (i32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (i32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (f32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (f32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (f32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (f32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (i64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (i64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (i64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (i64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (f64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (f64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (f64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (i64.const 10) (f64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (i32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (i32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (i32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (i32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (f32.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (f32.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (f32.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (f32.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (i64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (i64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (i64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (i64.const 20) (f64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (f64.const 20) (i32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (f64.const 20) (f32.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (f64.const 20) (i64.const 30)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1 1) + (func (export "testfn") + (memory.fill (f64.const 10) (f64.const 20) (f64.const 30)))) + "type mismatch") + +(module + (memory i64 1 1 ) + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "run") (param $offs i64) (param $val i32) (param $len i64) + (memory.fill (local.get $offs) (local.get $val) (local.get $len)))) + +(assert_trap (invoke "run" (i64.const 65280) (i32.const 37) (i64.const 512)) + "out of bounds memory access") + +(assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0)) + (i64.const -1)) +(module + (memory i64 1 1 ) + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "run") (param $offs i64) (param $val i32) (param $len i64) + (memory.fill (local.get $offs) (local.get $val) (local.get $len)))) + +(assert_trap (invoke "run" (i64.const 65279) (i32.const 37) (i64.const 514)) + "out of bounds memory access") + +(assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0)) + (i64.const -1)) +(module + (memory i64 1 1 ) + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "run") (param $offs i64) (param $val i32) (param $len i64) + (memory.fill (local.get $offs) (local.get $val) (local.get $len)))) + +(assert_trap (invoke "run" (i64.const 65279) (i32.const 37) (i64.const 4294967295)) + "out of bounds memory access") + +(assert_return (invoke "checkRange" (i64.const 0) (i64.const 1) (i32.const 0)) + (i64.const -1)) diff --git a/test/core/memory_init.wast b/test/core/memory_init.wast index 672b1c501..fc5318b4c 100644 --- a/test/core/memory_init.wast +++ b/test/core/memory_init.wast @@ -833,8 +833,8 @@ (assert_trap (invoke "run" (i32.const 65528) (i32.const 16)) "out of bounds memory access") -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) - (i32.const -1)) +(assert_return (invoke "checkRange" (0.const 1) (0.const 0) (i32.const undefined)) + (0.const -1)) (module (memory 1 1 ) (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") @@ -856,8 +856,8 @@ (assert_trap (invoke "run" (i32.const 65527) (i32.const 16)) "out of bounds memory access") -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) - (i32.const -1)) +(assert_return (invoke "checkRange" (0.const 1) (0.const 0) (i32.const undefined)) + (0.const -1)) (module (memory 1 1 ) (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") @@ -879,8 +879,8 @@ (assert_trap (invoke "run" (i32.const 65472) (i32.const 30)) "out of bounds memory access") -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) - (i32.const -1)) +(assert_return (invoke "checkRange" (0.const 1) (0.const 0) (i32.const undefined)) + (0.const -1)) (module (memory 1 1 ) (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") @@ -902,8 +902,8 @@ (assert_trap (invoke "run" (i32.const 65473) (i32.const 31)) "out of bounds memory access") -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) - (i32.const -1)) +(assert_return (invoke "checkRange" (0.const 1) (0.const 0) (i32.const undefined)) + (0.const -1)) (module (memory 1 ) (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") @@ -925,8 +925,8 @@ (assert_trap (invoke "run" (i32.const 65528) (i32.const 4294967040)) "out of bounds memory access") -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) - (i32.const -1)) +(assert_return (invoke "checkRange" (0.const 1) (0.const 0) (i32.const undefined)) + (0.const -1)) (module (memory 1 ) (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") @@ -948,8 +948,8 @@ (assert_trap (invoke "run" (i32.const 0) (i32.const 4294967292)) "out of bounds memory access") -(assert_return (invoke "checkRange" (i32.const 0) (i32.const 1) (i32.const 0)) - (i32.const -1)) +(assert_return (invoke "checkRange" (0.const 1) (0.const 0) (i32.const undefined)) + (0.const -1)) (module (memory 1) @@ -965,3 +965,966 @@ (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") (func (memory.init 64 (i32.const 0) (i32.const 0) (i32.const 0)))) + +(module + (memory (export "memory0") i64 1 1) + (data (i64.const 2) "\03\01\04\01") + (data "\02\07\01\08") + (data (i64.const 12) "\07\05\02\03\06") + (data "\05\09\02\07\06") + (func (export "test") + (nop)) + (func (export "load8_u") (param i64) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 5)) +(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 2)) +(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 6)) +(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") i64 1 1) + (data (i64.const 2) "\03\01\04\01") + (data "\02\07\01\08") + (data (i64.const 12) "\07\05\02\03\06") + (data "\05\09\02\07\06") + (func (export "test") + (memory.init 1 (i64.const 7) (i64.const 0) (i64.const 4))) + (func (export "load8_u") (param i64) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 2)) +(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 7)) +(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 8)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 5)) +(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 2)) +(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 6)) +(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") i64 1 1) + (data (i64.const 2) "\03\01\04\01") + (data "\02\07\01\08") + (data (i64.const 12) "\07\05\02\03\06") + (data "\05\09\02\07\06") + (func (export "test") + (memory.init 3 (i64.const 15) (i64.const 1) (i64.const 3))) + (func (export "load8_u") (param i64) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 5)) +(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 2)) +(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 9)) +(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 2)) +(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 7)) +(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0)) + +(module + (memory (export "memory0") i64 1 1) + (data (i64.const 2) "\03\01\04\01") + (data "\02\07\01\08") + (data (i64.const 12) "\07\05\02\03\06") + (data "\05\09\02\07\06") + (func (export "test") + (memory.init 1 (i64.const 7) (i64.const 0) (i64.const 4)) + (data.drop 1) + (memory.init 3 (i64.const 15) (i64.const 1) (i64.const 3)) + (data.drop 3) + (memory.copy (i64.const 20) (i64.const 15) (i64.const 5)) + (memory.copy (i64.const 21) (i64.const 29) (i64.const 1)) + (memory.copy (i64.const 24) (i64.const 10) (i64.const 1)) + (memory.copy (i64.const 13) (i64.const 11) (i64.const 4)) + (memory.copy (i64.const 19) (i64.const 20) (i64.const 5))) + (func (export "load8_u") (param i64) (result i32) + (i32.load8_u (local.get 0)))) + +(invoke "test") + +(assert_return (invoke "load8_u" (i64.const 0)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 1)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 2)) (i32.const 3)) +(assert_return (invoke "load8_u" (i64.const 3)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 4)) (i32.const 4)) +(assert_return (invoke "load8_u" (i64.const 5)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 6)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 7)) (i32.const 2)) +(assert_return (invoke "load8_u" (i64.const 8)) (i32.const 7)) +(assert_return (invoke "load8_u" (i64.const 9)) (i32.const 1)) +(assert_return (invoke "load8_u" (i64.const 10)) (i32.const 8)) +(assert_return (invoke "load8_u" (i64.const 11)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 12)) (i32.const 7)) +(assert_return (invoke "load8_u" (i64.const 13)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 14)) (i32.const 7)) +(assert_return (invoke "load8_u" (i64.const 15)) (i32.const 5)) +(assert_return (invoke "load8_u" (i64.const 16)) (i32.const 2)) +(assert_return (invoke "load8_u" (i64.const 17)) (i32.const 7)) +(assert_return (invoke "load8_u" (i64.const 18)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 19)) (i32.const 9)) +(assert_return (invoke "load8_u" (i64.const 20)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 21)) (i32.const 7)) +(assert_return (invoke "load8_u" (i64.const 22)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 23)) (i32.const 8)) +(assert_return (invoke "load8_u" (i64.const 24)) (i32.const 8)) +(assert_return (invoke "load8_u" (i64.const 25)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 26)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 27)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 28)) (i32.const 0)) +(assert_return (invoke "load8_u" (i64.const 29)) (i32.const 0)) +(assert_invalid + (module + (func (export "test") + (data.drop 0))) + "unknown data segment") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (data.drop 4))) + "unknown data segment") + +(module + (memory i64 1) + (data "\37") + (func (export "test") + (data.drop 0) + (data.drop 0))) +(invoke "test") + +(module + (memory i64 1) + (data "\37") + (func (export "test") + (data.drop 0) + (memory.init 0 (i64.const 1234) (i64.const 1) (i64.const 1)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory i64 1) + (data (i64.const 0) "\37") + (func (export "test") + (memory.init 0 (i64.const 1234) (i64.const 1) (i64.const 1)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(assert_invalid + (module + (func (export "test") + (memory.init 1 (i64.const 1234) (i64.const 1) (i64.const 1)))) + "unknown memory 0") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 1 (i64.const 1234) (i64.const 1) (i64.const 1)))) + "unknown data segment 1") + +(module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (i64.const 0) (i64.const 1)) + (memory.init 0 (i64.const 1) (i64.const 0) (i64.const 1)))) +(invoke "test") + +(module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1234) (i64.const 0) (i64.const 5)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1234) (i64.const 2) (i64.const 3)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 0xFFFE) (i64.const 1) (i64.const 3)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1234) (i64.const 4) (i64.const 0)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1234) (i64.const 1) (i64.const 0)))) +(invoke "test") + +(module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 0x10001) (i64.const 0) (i64.const 0)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 0x10000) (i64.const 0) (i64.const 0)))) +(invoke "test") + +(module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 0x10000) (i64.const 1) (i64.const 0)))) +(invoke "test") + +(module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 0x10001) (i64.const 4) (i64.const 0)))) +(assert_trap (invoke "test") "out of bounds memory access") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (i32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (i32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (i32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (f32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (f32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (f32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (f32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (i64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (i64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (i64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (i64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (f64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (f64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (f64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i32.const 1) (f64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (i32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (i32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (i32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (i32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (f32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (f32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (f32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (f32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (i64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (i64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (i64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (i64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (f64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (f64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (f64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f32.const 1) (f64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (i32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (i32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (i32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (i32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (f32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (f32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (f32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (f32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (i64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (i64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (i64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (i64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (f64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (f64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (f64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (i64.const 1) (f64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (i32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (i32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (i32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (i32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (f32.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (f32.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (f32.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (f32.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (i64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (i64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (i64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (i64.const 1) (f64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (f64.const 1) (i32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (f64.const 1) (f32.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (f64.const 1) (i64.const 1)))) + "type mismatch") + +(assert_invalid + (module + (memory i64 1) + (data "\37") + (func (export "test") + (memory.init 0 (f64.const 1) (f64.const 1) (f64.const 1)))) + "type mismatch") + +(module + (memory i64 1 1 ) + (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "run") (param $offs i64) (param $len i64) + (memory.init 0 (local.get $offs) (i64.const 0) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 65528) (i32.const 16)) + "out of bounds memory access") + +(assert_return (invoke "checkRange" (0.const 1) (0.const 0) (i32.const undefined)) + (0.const -1)) +(module + (memory i64 1 1 ) + (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "run") (param $offs i64) (param $len i64) + (memory.init 0 (local.get $offs) (i64.const 0) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 65527) (i32.const 16)) + "out of bounds memory access") + +(assert_return (invoke "checkRange" (0.const 1) (0.const 0) (i32.const undefined)) + (0.const -1)) +(module + (memory i64 1 1 ) + (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "run") (param $offs i64) (param $len i64) + (memory.init 0 (local.get $offs) (i64.const 0) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 65472) (i32.const 30)) + "out of bounds memory access") + +(assert_return (invoke "checkRange" (0.const 1) (0.const 0) (i32.const undefined)) + (0.const -1)) +(module + (memory i64 1 1 ) + (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "run") (param $offs i64) (param $len i64) + (memory.init 0 (local.get $offs) (i64.const 0) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 65473) (i32.const 31)) + "out of bounds memory access") + +(assert_return (invoke "checkRange" (0.const 1) (0.const 0) (i32.const undefined)) + (0.const -1)) +(module + (memory i64 1 ) + (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "run") (param $offs i64) (param $len i64) + (memory.init 0 (local.get $offs) (i64.const 0) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 65528) (i32.const 4294967040)) + "out of bounds memory access") + +(assert_return (invoke "checkRange" (0.const 1) (0.const 0) (i32.const undefined)) + (0.const -1)) +(module + (memory i64 1 ) + (data "\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42\42") + + (func (export "checkRange") (param $from i64) (param $to i64) (param $expected i32) (result i64) + (loop $cont + (if (i64.eq (local.get $from) (local.get $to)) + (then + (return (i64.const -1)))) + (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) + (then + (local.set $from (i64.add (local.get $from) (i64.const 1))) + (br $cont)))) + (return (local.get $from))) + + (func (export "run") (param $offs i64) (param $len i64) + (memory.init 0 (local.get $offs) (i64.const 0) (local.get $len)))) + +(assert_trap (invoke "run" (i32.const 0) (i32.const 4294967292)) + "out of bounds memory access") + +(assert_return (invoke "checkRange" (0.const 1) (0.const 0) (i32.const undefined)) + (0.const -1)) + +(module + (memory i64 1) + ;; 65 data segments. 64 is the smallest positive number that is encoded + ;; differently as a signed LEB. + (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") + (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") + (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") + (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") + (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") + (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") + (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") + (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") + (data "") + (func (memory.init 64 (i64.const 0) (i64.const 0) (i64.const 0)))) diff --git a/test/meta/common.js b/test/meta/common.js index 9a277e44f..493da2d47 100644 --- a/test/meta/common.js +++ b/test/meta/common.js @@ -7,23 +7,23 @@ function print_origin(origin) { print(";;"); } -function checkRangeCode() { +function checkRangeCode(memtype) { return ` - (func (export "checkRange") (param $from i32) (param $to i32) (param $expected i32) (result i32) + (func (export "checkRange") (param $from ${memtype}) (param $to ${memtype}) (param $expected i32) (result ${memtype}) (loop $cont - (if (i32.eq (local.get $from) (local.get $to)) + (if (${memtype}.eq (local.get $from) (local.get $to)) (then - (return (i32.const -1)))) + (return (${memtype}.const -1)))) (if (i32.eq (i32.load8_u (local.get $from)) (local.get $expected)) (then - (local.set $from (i32.add (local.get $from) (i32.const 1))) + (local.set $from (${memtype}.add (local.get $from) (${memtype}.const 1))) (br $cont)))) (return (local.get $from))) `; } -function checkRange(from, to, expected) { +function checkRange(memtype, from, to, expected) { print( -`(assert_return (invoke "checkRange" (i32.const ${from}) (i32.const ${to}) (i32.const ${expected})) - (i32.const -1))`); +`(assert_return (invoke "checkRange" (${memtype}.const ${from}) (${memtype}.const ${to}) (i32.const ${expected})) + (${memtype}.const -1))`); } diff --git a/test/meta/generate_memory_copy.js b/test/meta/generate_memory_copy.js index 36751b86a..ee4714354 100644 --- a/test/meta/generate_memory_copy.js +++ b/test/meta/generate_memory_copy.js @@ -3,96 +3,100 @@ print_origin("generate_memory_copy.js"); -// In-bounds tests. +for ( const memtype of ['i32', 'i64'] ) { -function mem_test(instruction, expected_result_vector) { - print( + const decltype = memtype == 'i64' ? ' i64' : ''; + + // In-bounds tests. + + function mem_test(instruction, expected_result_vector) { + print( ` (module - (memory (export "memory0") 1 1) - (data (i32.const 2) "\\03\\01\\04\\01") - (data (i32.const 12) "\\07\\05\\02\\03\\06") + (memory (export "memory0")${decltype} 1 1) + (data (${memtype}.const 2) "\\03\\01\\04\\01") + (data (${memtype}.const 12) "\\07\\05\\02\\03\\06") (func (export "test") ${instruction}) - (func (export "load8_u") (param i32) (result i32) + (func (export "load8_u") (param ${memtype}) (result i32) (i32.load8_u (local.get 0)))) (invoke "test") `); - for (let i = 0; i < expected_result_vector.length; i++) { - print(`(assert_return (invoke "load8_u" (i32.const ${i})) (i32.const ${expected_result_vector[i]}))`); - } -} - -const e = 0; - -// This just gives the initial state of the memory, with its active -// initialisers applied. -mem_test("(nop)", - [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); - -// Copy non-zero over non-zero -mem_test("(memory.copy (i32.const 13) (i32.const 2) (i32.const 3))", - [e,e,3,1,4, 1,e,e,e,e, e,e,7,3,1, 4,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); - -// Copy non-zero over zero -mem_test("(memory.copy (i32.const 25) (i32.const 15) (i32.const 2))", - [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, 3,6,e,e,e]); - -// Copy zero over non-zero -mem_test("(memory.copy (i32.const 13) (i32.const 25) (i32.const 3))", - [e,e,3,1,4, 1,e,e,e,e, e,e,7,e,e, e,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); - -// Copy zero over zero -mem_test("(memory.copy (i32.const 20) (i32.const 22) (i32.const 4))", - [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); - -// Copy zero and non-zero entries, non overlapping -mem_test("(memory.copy (i32.const 25) (i32.const 1) (i32.const 3))", - [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,3,1,e,e]); - -// Copy zero and non-zero entries, overlapping, backwards -mem_test("(memory.copy (i32.const 10) (i32.const 12) (i32.const 7))", - [e,e,3,1,4, 1,e,e,e,e, 7,5,2,3,6, e,e,e,e,e, e,e,e,e,e, e,e,e,e,e]); - -// Copy zero and non-zero entries, overlapping, forwards -mem_test("(memory.copy (i32.const 12) (i32.const 10) (i32.const 7))", - [e,e,3,1,4, 1,e,e,e,e, e,e,e,e,7, 5,2,3,6,e, e,e,e,e,e, e,e,e,e,e]); - -// Out-of-bounds tests. -// -// The operation is out of bounds of the memory for the source or target, but -// must perform the operation up to the appropriate bound. Major cases: -// -// - non-overlapping regions -// - overlapping regions with src >= dest -// - overlapping regions with src == dest -// - overlapping regions with src < dest -// - arithmetic overflow on src addresses -// - arithmetic overflow on target addresses -// -// for each of those, -// -// - src address oob -// - target address oob -// - both oob - -function initializers(count, startingAt) { - let s = ""; - for ( let i=0, j=startingAt; i < count; i++, j++ ) - s += "\\" + (i + 256).toString(16).substring(1); - return s; -} - -function mem_copy(min, max, shared, srcOffs, targetOffs, len) { - let copyDown = srcOffs < targetOffs; - let memLength = min * PAGESIZE; - let targetAvail = memLength - targetOffs; - let srcAvail = memLength - srcOffs; - let targetLim = targetOffs + Math.min(len, targetAvail, srcAvail); - let srcLim = srcOffs + Math.min(len, targetAvail, srcAvail); - - print( + for (let i = 0; i < expected_result_vector.length; i++) { + print(`(assert_return (invoke "load8_u" (${memtype}.const ${i})) (i32.const ${expected_result_vector[i]}))`); + } + } + + const e = 0; + + // This just gives the initial state of the memory, with its active + // initialisers applied. + mem_test("(nop)", + [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); + + // Copy non-zero over non-zero + mem_test(`(memory.copy (${memtype}.const 13) (${memtype}.const 2) (${memtype}.const 3))`, + [e,e,3,1,4, 1,e,e,e,e, e,e,7,3,1, 4,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); + + // Copy non-zero over zero + mem_test(`(memory.copy (${memtype}.const 25) (${memtype}.const 15) (${memtype}.const 2))`, + [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, 3,6,e,e,e]); + + // Copy zero over non-zero + mem_test(`(memory.copy (${memtype}.const 13) (${memtype}.const 25) (${memtype}.const 3))`, + [e,e,3,1,4, 1,e,e,e,e, e,e,7,e,e, e,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); + + // Copy zero over zero + mem_test(`(memory.copy (${memtype}.const 20) (${memtype}.const 22) (${memtype}.const 4))`, + [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); + + // Copy zero and non-zero entries, non overlapping + mem_test(`(memory.copy (${memtype}.const 25) (${memtype}.const 1) (${memtype}.const 3))`, + [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,3,1,e,e]); + + // Copy zero and non-zero entries, overlapping, backwards + mem_test(`(memory.copy (${memtype}.const 10) (${memtype}.const 12) (${memtype}.const 7))`, + [e,e,3,1,4, 1,e,e,e,e, 7,5,2,3,6, e,e,e,e,e, e,e,e,e,e, e,e,e,e,e]); + + // Copy zero and non-zero entries, overlapping, forwards + mem_test(`(memory.copy (${memtype}.const 12) (${memtype}.const 10) (${memtype}.const 7))`, + [e,e,3,1,4, 1,e,e,e,e, e,e,e,e,7, 5,2,3,6,e, e,e,e,e,e, e,e,e,e,e]); + + // Out-of-bounds tests. + // + // The operation is out of bounds of the memory for the source or target, but + // must perform the operation up to the appropriate bound. Major cases: + // + // - non-overlapping regions + // - overlapping regions with src >= dest + // - overlapping regions with src == dest + // - overlapping regions with src < dest + // - arithmetic overflow on src addresses + // - arithmetic overflow on target addresses + // + // for each of those, + // + // - src address oob + // - target address oob + // - both oob + + function initializers(count, startingAt) { + let s = ""; + for ( let i=0, j=startingAt; i < count; i++, j++ ) + s += "\\" + (i + 256).toString(16).substring(1); + return s; + } + + function mem_copy(min, max, shared, srcOffs, targetOffs, len) { + let copyDown = srcOffs < targetOffs; + let memLength = min * PAGESIZE; + let targetAvail = memLength - targetOffs; + let srcAvail = memLength - srcOffs; + let targetLim = targetOffs + Math.min(len, targetAvail, srcAvail); + let srcLim = srcOffs + Math.min(len, targetAvail, srcAvail); + + print( ` (module (memory (export "mem") ${min} ${max} ${shared}) @@ -106,663 +110,664 @@ function mem_copy(min, max, shared, srcOffs, targetOffs, len) { "out of bounds memory access") `); - let immediateOOB = copyDown && (srcOffs + len > memLength || targetOffs + len > memLength); - - var s = 0; - var i = 0; - let k = 0; - for (i=0; i < memLength; i++ ) { - if (i >= srcOffs && i < srcLim) { - print(`(assert_return (invoke "load8_u" (i32.const ${i})) (i32.const ${(s++) & 0xFF}))`); - continue; - } - // Only spot-check for zero, or we'll be here all night. - if (++k == 199) { - print(`(assert_return (invoke "load8_u" (i32.const ${i})) (i32.const 0))`); - k = 0; - } - } -} - -// OOB target address, nonoverlapping -mem_copy(1, 1, "", 0, PAGESIZE-20, 40); -mem_copy(1, 1, "", 0, PAGESIZE-21, 39); -if (WITH_SHARED_MEMORY) { - mem_copy(2, 4, "shared", 0, 2*PAGESIZE-20, 40); - mem_copy(2, 4, "shared", 0, 2*PAGESIZE-21, 39); -} - -// OOB source address, nonoverlapping -mem_copy(1, 1, "", PAGESIZE-20, 0, 40); -mem_copy(1, 1, "", PAGESIZE-21, 0, 39); -if (WITH_SHARED_MEMORY) { - mem_copy(2, 4, "shared", 2*PAGESIZE-20, 0, 40); - mem_copy(2, 4, "shared", 2*PAGESIZE-21, 0, 39); -} - -// OOB target address, overlapping, src < target -mem_copy(1, 1, "", PAGESIZE-50, PAGESIZE-20, 40); - -// OOB source address, overlapping, target < src -mem_copy(1, 1, "", PAGESIZE-20, PAGESIZE-50, 40); - -// OOB both, overlapping, including target == src -mem_copy(1, 1, "", PAGESIZE-30, PAGESIZE-20, 40); -mem_copy(1, 1, "", PAGESIZE-20, PAGESIZE-30, 40); -mem_copy(1, 1, "", PAGESIZE-20, PAGESIZE-20, 40); - -// Arithmetic overflow on source address. -mem_copy(1, "", "", PAGESIZE-20, 0, 0xFFFFF000); - -// Arithmetic overflow on target adddress is an overlapping case. -mem_copy(1, 1, "", PAGESIZE-0x1000, PAGESIZE-20, 0xFFFFFF00); - -// Sundry compilation failures. - -// Module doesn't have a memory. -print( + let immediateOOB = copyDown && (srcOffs + len > memLength || targetOffs + len > memLength); + + var s = 0; + var i = 0; + let k = 0; + for (i=0; i < memLength; i++ ) { + if (i >= srcOffs && i < srcLim) { + print(`(assert_return (invoke "load8_u" (i32.const ${i})) (i32.const ${(s++) & 0xFF}))`); + continue; + } + // Only spot-check for zero, or we'll be here all night. + if (++k == 199) { + print(`(assert_return (invoke "load8_u" (i32.const ${i})) (i32.const 0))`); + k = 0; + } + } + } + + // OOB target address, nonoverlapping + mem_copy(1, 1, "", 0, PAGESIZE-20, 40); + mem_copy(1, 1, "", 0, PAGESIZE-21, 39); + if (WITH_SHARED_MEMORY) { + mem_copy(2, 4, "shared", 0, 2*PAGESIZE-20, 40); + mem_copy(2, 4, "shared", 0, 2*PAGESIZE-21, 39); + } + + // OOB source address, nonoverlapping + mem_copy(1, 1, "", PAGESIZE-20, 0, 40); + mem_copy(1, 1, "", PAGESIZE-21, 0, 39); + if (WITH_SHARED_MEMORY) { + mem_copy(2, 4, "shared", 2*PAGESIZE-20, 0, 40); + mem_copy(2, 4, "shared", 2*PAGESIZE-21, 0, 39); + } + + // OOB target address, overlapping, src < target + mem_copy(1, 1, "", PAGESIZE-50, PAGESIZE-20, 40); + + // OOB source address, overlapping, target < src + mem_copy(1, 1, "", PAGESIZE-20, PAGESIZE-50, 40); + + // OOB both, overlapping, including target == src + mem_copy(1, 1, "", PAGESIZE-30, PAGESIZE-20, 40); + mem_copy(1, 1, "", PAGESIZE-20, PAGESIZE-30, 40); + mem_copy(1, 1, "", PAGESIZE-20, PAGESIZE-20, 40); + + // Arithmetic overflow on source address. + mem_copy(1, "", "", PAGESIZE-20, 0, 0xFFFFF000); + + // Arithmetic overflow on target adddress is an overlapping case. + mem_copy(1, 1, "", PAGESIZE-0x1000, PAGESIZE-20, 0xFFFFFF00); + + // Sundry compilation failures. + + // Module doesn't have a memory. + print( ` (assert_invalid (module (func (export "testfn") - (memory.copy (i32.const 10) (i32.const 20) (i32.const 30)))) + (memory.copy (${memtype}.const 10) (${memtype}.const 20) (${memtype}.const 30)))) "unknown memory 0") `); -// Invalid argument types. TODO: We can add anyref, funcref, etc here. -{ - const tys = ['i32', 'f32', 'i64', 'f64']; - for (let ty1 of tys) { - for (let ty2 of tys) { - for (let ty3 of tys) { - if (ty1 == 'i32' && ty2 == 'i32' && ty3 == 'i32') - continue; // this is the only valid case - print( + // Invalid argument types. TODO: We can add anyref, funcref, etc here. + { + const tys = ['i32', 'f32', 'i64', 'f64']; + for (let ty1 of tys) { + for (let ty2 of tys) { + for (let ty3 of tys) { + if (ty1 == memtype && ty2 == memtype && ty3 == memtype) + continue; // this is the only valid case + print( `(assert_invalid (module - (memory 1 1) + (memory${decltype} 1 1) (func (export "testfn") (memory.copy (${ty1}.const 10) (${ty2}.const 20) (${ty3}.const 30)))) "type mismatch") `); - }}} -} + }}} + } -// Both ranges valid. Copy 5 bytes backwards by 1 (overlapping). -// result = 0x00--(09) 0x55--(11) 0x00--(pagesize-20) -print( + // Both ranges valid. Copy 5 bytes backwards by 1 (overlapping). + // result = 0x00--(09) 0x55--(11) 0x00--(pagesize-20) + print( ` (module - (memory 1 1) + (memory${decltype} 1 1) (func (export "test") - (memory.fill (i32.const 10) (i32.const 0x55) (i32.const 10)) - (memory.copy (i32.const 9) (i32.const 10) (i32.const 5))) - ${checkRangeCode()}) + (memory.fill (${memtype}.const 10) (i32.const 0x55) (${memtype}.const 10)) + (memory.copy (${memtype}.const 9) (${memtype}.const 10) (${memtype}.const 5))) + ${checkRangeCode(memtype)}) (invoke "test") `); -checkRange(0, 0+9, 0x00); -checkRange(9, 9+11, 0x55); -checkRange(9+11, 0x10000, 0x00); + checkRange(memtype, 0, 0+9, 0x00); + checkRange(memtype, 9, 9+11, 0x55); + checkRange(memtype, 9+11, 0x10000, 0x00); -// Both ranges valid. Copy 5 bytes forwards by 1 (overlapping). -// result = 0x00--(10) 0x55--(11) 0x00--(pagesize-19) -print( + // Both ranges valid. Copy 5 bytes forwards by 1 (overlapping). + // result = 0x00--(10) 0x55--(11) 0x00--(pagesize-19) + print( ` (module - (memory 1 1) + (memory${decltype} 1 1) (func (export "test") - (memory.fill (i32.const 10) (i32.const 0x55) (i32.const 10)) - (memory.copy (i32.const 16) (i32.const 15) (i32.const 5))) - ${checkRangeCode()}) + (memory.fill (${memtype}.const 10) (i32.const 0x55) (${memtype}.const 10)) + (memory.copy (${memtype}.const 16) (${memtype}.const 15) (${memtype}.const 5))) + ${checkRangeCode(memtype)}) (invoke "test") `); -checkRange(0, 0+10, 0x00); -checkRange(10, 10+11, 0x55); -checkRange(10+11, 0x10000, 0x00); + checkRange(memtype, 0, 0+10, 0x00); + checkRange(memtype, 10, 10+11, 0x55); + checkRange(memtype, 10+11, 0x10000, 0x00); -// Destination range invalid -print( + // Destination range invalid + print( ` (module - (memory 1 1) + (memory${decltype} 1 1) (func (export "test") - (memory.copy (i32.const 0xFF00) (i32.const 0x8000) (i32.const 257)))) + (memory.copy (${memtype}.const 0xFF00) (${memtype}.const 0x8000) (${memtype}.const 257)))) (assert_trap (invoke "test") "out of bounds memory access") `); -// Destination wraparound the end of 32-bit offset space + // Destination wraparound the end of 32-bit offset space print( `(module - (memory 1 1) + (memory${decltype} 1 1) (func (export "test") - (memory.copy (i32.const 0xFFFFFF00) (i32.const 0x4000) (i32.const 257)))) + (memory.copy (${memtype}.const 0xFFFFFF00) (${memtype}.const 0x4000) (${memtype}.const 257)))) (assert_trap (invoke "test") "out of bounds memory access") `); -// Source range invalid + // Source range invalid print( `(module - (memory 1 1) + (memory${decltype} 1 1) (func (export "test") - (memory.copy (i32.const 0x8000) (i32.const 0xFF00) (i32.const 257)))) + (memory.copy (${memtype}.const 0x8000) (${memtype}.const 0xFF00) (${memtype}.const 257)))) (assert_trap (invoke "test") "out of bounds memory access") `); -// Source wraparound the end of 32-bit offset space + // Source wraparound the end of 32-bit offset space print( `(module - (memory 1 1) + (memory${decltype} 1 1) (func (export "test") - (memory.copy (i32.const 0x4000) (i32.const 0xFFFFFF00) (i32.const 257)))) + (memory.copy (${memtype}.const 0x4000) (${memtype}.const 0xFFFFFF00) (${memtype}.const 257)))) (assert_trap (invoke "test") "out of bounds memory access") `); -// Zero len with both offsets in-bounds is a no-op + // Zero len with both offsets in-bounds is a no-op print( `(module - (memory 1 1) + (memory${decltype} 1 1) (func (export "test") - (memory.fill (i32.const 0x0000) (i32.const 0x55) (i32.const 0x8000)) - (memory.fill (i32.const 0x8000) (i32.const 0xAA) (i32.const 0x8000)) - (memory.copy (i32.const 0x9000) (i32.const 0x7000) (i32.const 0))) - ${checkRangeCode()}) + (memory.fill (${memtype}.const 0x0000) (i32.const 0x55) (${memtype}.const 0x8000)) + (memory.fill (${memtype}.const 0x8000) (i32.const 0xAA) (${memtype}.const 0x8000)) + (memory.copy (${memtype}.const 0x9000) (${memtype}.const 0x7000) (${memtype}.const 0))) + ${checkRangeCode(memtype)}) (invoke "test") `); -checkRange(0x00000, 0x08000, 0x55); -checkRange(0x08000, 0x10000, 0xAA); + checkRange(memtype, 0x00000, 0x08000, 0x55); + checkRange(memtype, 0x08000, 0x10000, 0xAA); -// Zero len with dest offset out-of-bounds at the end of memory is allowed -print( + // Zero len with dest offset out-of-bounds at the end of memory is allowed + print( `(module - (memory 1 1) + (memory${decltype} 1 1) (func (export "test") - (memory.copy (i32.const 0x10000) (i32.const 0x7000) (i32.const 0)))) + (memory.copy (${memtype}.const 0x10000) (${memtype}.const 0x7000) (${memtype}.const 0)))) (invoke "test") `); -// Zero len with dest offset out-of-bounds past the end of memory is not allowed -print( + // Zero len with dest offset out-of-bounds past the end of memory is not allowed + print( `(module - (memory 1 1) + (memory${decltype} 1 1) (func (export "test") - (memory.copy (i32.const 0x20000) (i32.const 0x7000) (i32.const 0)))) + (memory.copy (${memtype}.const 0x20000) (${memtype}.const 0x7000) (${memtype}.const 0)))) (assert_trap (invoke "test") "out of bounds memory access") `); -// Zero len with src offset out-of-bounds at the end of memory is allowed -print( + // Zero len with src offset out-of-bounds at the end of memory is allowed + print( `(module - (memory 1 1) + (memory${decltype} 1 1) (func (export "test") - (memory.copy (i32.const 0x9000) (i32.const 0x10000) (i32.const 0)))) + (memory.copy (${memtype}.const 0x9000) (${memtype}.const 0x10000) (${memtype}.const 0)))) (invoke "test") `); -// Zero len with src offset out-of-bounds past the end of memory is not allowed -print( + // Zero len with src offset out-of-bounds past the end of memory is not allowed + print( `(module - (memory 1 1) + (memory${decltype} 1 1) (func (export "test") - (memory.copy (i32.const 0x9000) (i32.const 0x20000) (i32.const 0)))) + (memory.copy (${memtype}.const 0x9000) (${memtype}.const 0x20000) (${memtype}.const 0)))) (assert_trap (invoke "test") "out of bounds memory access") `); -// Zero len with both dest and src offsets out-of-bounds at the end of memory is allowed -print( + // Zero len with both dest and src offsets out-of-bounds at the end of memory is allowed + print( `(module - (memory 1 1) + (memory${decltype} 1 1) (func (export "test") - (memory.copy (i32.const 0x10000) (i32.const 0x10000) (i32.const 0)))) + (memory.copy (${memtype}.const 0x10000) (${memtype}.const 0x10000) (${memtype}.const 0)))) (invoke "test") `); -// Zero len with both dest and src offsets out-of-bounds past the end of memory is not allowed -print( + // Zero len with both dest and src offsets out-of-bounds past the end of memory is not allowed + print( `(module - (memory 1 1) + (memory${decltype} 1 1) (func (export "test") - (memory.copy (i32.const 0x20000) (i32.const 0x20000) (i32.const 0)))) + (memory.copy (${memtype}.const 0x20000) (${memtype}.const 0x20000) (${memtype}.const 0)))) (assert_trap (invoke "test") "out of bounds memory access") `); -// 100 random fills followed by 100 random copies, in a single-page buffer, -// followed by verification of the (now heavily mashed-around) buffer. -print( + // 100 random fills followed by 100 random copies, in a single-page buffer, + // followed by verification of the (now heavily mashed-around) buffer. + print( `(module - (memory 1 1) + (memory${decltype} 1 1) (func (export "test") - (memory.fill (i32.const 17767) (i32.const 1) (i32.const 1344)) - (memory.fill (i32.const 39017) (i32.const 2) (i32.const 1055)) - (memory.fill (i32.const 56401) (i32.const 3) (i32.const 988)) - (memory.fill (i32.const 37962) (i32.const 4) (i32.const 322)) - (memory.fill (i32.const 7977) (i32.const 5) (i32.const 1994)) - (memory.fill (i32.const 22714) (i32.const 6) (i32.const 3036)) - (memory.fill (i32.const 16882) (i32.const 7) (i32.const 2372)) - (memory.fill (i32.const 43491) (i32.const 8) (i32.const 835)) - (memory.fill (i32.const 124) (i32.const 9) (i32.const 1393)) - (memory.fill (i32.const 2132) (i32.const 10) (i32.const 2758)) - (memory.fill (i32.const 8987) (i32.const 11) (i32.const 3098)) - (memory.fill (i32.const 52711) (i32.const 12) (i32.const 741)) - (memory.fill (i32.const 3958) (i32.const 13) (i32.const 2823)) - (memory.fill (i32.const 49715) (i32.const 14) (i32.const 1280)) - (memory.fill (i32.const 50377) (i32.const 15) (i32.const 1466)) - (memory.fill (i32.const 20493) (i32.const 16) (i32.const 3158)) - (memory.fill (i32.const 47665) (i32.const 17) (i32.const 544)) - (memory.fill (i32.const 12451) (i32.const 18) (i32.const 2669)) - (memory.fill (i32.const 24869) (i32.const 19) (i32.const 2651)) - (memory.fill (i32.const 45317) (i32.const 20) (i32.const 1570)) - (memory.fill (i32.const 43096) (i32.const 21) (i32.const 1691)) - (memory.fill (i32.const 33886) (i32.const 22) (i32.const 646)) - (memory.fill (i32.const 48555) (i32.const 23) (i32.const 1858)) - (memory.fill (i32.const 53453) (i32.const 24) (i32.const 2657)) - (memory.fill (i32.const 30363) (i32.const 25) (i32.const 981)) - (memory.fill (i32.const 9300) (i32.const 26) (i32.const 1807)) - (memory.fill (i32.const 50190) (i32.const 27) (i32.const 487)) - (memory.fill (i32.const 62753) (i32.const 28) (i32.const 530)) - (memory.fill (i32.const 36316) (i32.const 29) (i32.const 943)) - (memory.fill (i32.const 6768) (i32.const 30) (i32.const 381)) - (memory.fill (i32.const 51262) (i32.const 31) (i32.const 3089)) - (memory.fill (i32.const 49729) (i32.const 32) (i32.const 658)) - (memory.fill (i32.const 44540) (i32.const 33) (i32.const 1702)) - (memory.fill (i32.const 33342) (i32.const 34) (i32.const 1092)) - (memory.fill (i32.const 50814) (i32.const 35) (i32.const 1410)) - (memory.fill (i32.const 47594) (i32.const 36) (i32.const 2204)) - (memory.fill (i32.const 54123) (i32.const 37) (i32.const 2394)) - (memory.fill (i32.const 55183) (i32.const 38) (i32.const 250)) - (memory.fill (i32.const 22620) (i32.const 39) (i32.const 2097)) - (memory.fill (i32.const 17132) (i32.const 40) (i32.const 3264)) - (memory.fill (i32.const 54331) (i32.const 41) (i32.const 3299)) - (memory.fill (i32.const 39474) (i32.const 42) (i32.const 2796)) - (memory.fill (i32.const 36156) (i32.const 43) (i32.const 2070)) - (memory.fill (i32.const 35308) (i32.const 44) (i32.const 2763)) - (memory.fill (i32.const 32731) (i32.const 45) (i32.const 312)) - (memory.fill (i32.const 63746) (i32.const 46) (i32.const 192)) - (memory.fill (i32.const 30974) (i32.const 47) (i32.const 596)) - (memory.fill (i32.const 16635) (i32.const 48) (i32.const 501)) - (memory.fill (i32.const 57002) (i32.const 49) (i32.const 686)) - (memory.fill (i32.const 34299) (i32.const 50) (i32.const 385)) - (memory.fill (i32.const 60881) (i32.const 51) (i32.const 903)) - (memory.fill (i32.const 61445) (i32.const 52) (i32.const 2390)) - (memory.fill (i32.const 46972) (i32.const 53) (i32.const 1441)) - (memory.fill (i32.const 25973) (i32.const 54) (i32.const 3162)) - (memory.fill (i32.const 5566) (i32.const 55) (i32.const 2135)) - (memory.fill (i32.const 35977) (i32.const 56) (i32.const 519)) - (memory.fill (i32.const 44892) (i32.const 57) (i32.const 3280)) - (memory.fill (i32.const 46760) (i32.const 58) (i32.const 1678)) - (memory.fill (i32.const 46607) (i32.const 59) (i32.const 3168)) - (memory.fill (i32.const 22449) (i32.const 60) (i32.const 1441)) - (memory.fill (i32.const 58609) (i32.const 61) (i32.const 663)) - (memory.fill (i32.const 32261) (i32.const 62) (i32.const 1671)) - (memory.fill (i32.const 3063) (i32.const 63) (i32.const 721)) - (memory.fill (i32.const 34025) (i32.const 64) (i32.const 84)) - (memory.fill (i32.const 33338) (i32.const 65) (i32.const 2029)) - (memory.fill (i32.const 36810) (i32.const 66) (i32.const 29)) - (memory.fill (i32.const 19147) (i32.const 67) (i32.const 3034)) - (memory.fill (i32.const 12616) (i32.const 68) (i32.const 1043)) - (memory.fill (i32.const 18276) (i32.const 69) (i32.const 3324)) - (memory.fill (i32.const 4639) (i32.const 70) (i32.const 1091)) - (memory.fill (i32.const 16158) (i32.const 71) (i32.const 1997)) - (memory.fill (i32.const 18204) (i32.const 72) (i32.const 2259)) - (memory.fill (i32.const 50532) (i32.const 73) (i32.const 3189)) - (memory.fill (i32.const 11028) (i32.const 74) (i32.const 1968)) - (memory.fill (i32.const 15962) (i32.const 75) (i32.const 1455)) - (memory.fill (i32.const 45406) (i32.const 76) (i32.const 1177)) - (memory.fill (i32.const 54137) (i32.const 77) (i32.const 1568)) - (memory.fill (i32.const 33083) (i32.const 78) (i32.const 1642)) - (memory.fill (i32.const 61028) (i32.const 79) (i32.const 3284)) - (memory.fill (i32.const 51729) (i32.const 80) (i32.const 223)) - (memory.fill (i32.const 4361) (i32.const 81) (i32.const 2171)) - (memory.fill (i32.const 57514) (i32.const 82) (i32.const 1322)) - (memory.fill (i32.const 55724) (i32.const 83) (i32.const 2648)) - (memory.fill (i32.const 24091) (i32.const 84) (i32.const 1045)) - (memory.fill (i32.const 43183) (i32.const 85) (i32.const 3097)) - (memory.fill (i32.const 32307) (i32.const 86) (i32.const 2796)) - (memory.fill (i32.const 3811) (i32.const 87) (i32.const 2010)) - (memory.fill (i32.const 54856) (i32.const 88) (i32.const 0)) - (memory.fill (i32.const 49941) (i32.const 89) (i32.const 2069)) - (memory.fill (i32.const 20411) (i32.const 90) (i32.const 2896)) - (memory.fill (i32.const 33826) (i32.const 91) (i32.const 192)) - (memory.fill (i32.const 9402) (i32.const 92) (i32.const 2195)) - (memory.fill (i32.const 12413) (i32.const 93) (i32.const 24)) - (memory.fill (i32.const 14091) (i32.const 94) (i32.const 577)) - (memory.fill (i32.const 44058) (i32.const 95) (i32.const 2089)) - (memory.fill (i32.const 36735) (i32.const 96) (i32.const 3436)) - (memory.fill (i32.const 23288) (i32.const 97) (i32.const 2765)) - (memory.fill (i32.const 6392) (i32.const 98) (i32.const 830)) - (memory.fill (i32.const 33307) (i32.const 99) (i32.const 1938)) - (memory.fill (i32.const 21941) (i32.const 100) (i32.const 2750)) - (memory.copy (i32.const 59214) (i32.const 54248) (i32.const 2098)) - (memory.copy (i32.const 63026) (i32.const 39224) (i32.const 230)) - (memory.copy (i32.const 51833) (i32.const 23629) (i32.const 2300)) - (memory.copy (i32.const 6708) (i32.const 23996) (i32.const 639)) - (memory.copy (i32.const 6990) (i32.const 33399) (i32.const 1097)) - (memory.copy (i32.const 19403) (i32.const 10348) (i32.const 3197)) - (memory.copy (i32.const 27308) (i32.const 54406) (i32.const 100)) - (memory.copy (i32.const 27221) (i32.const 43682) (i32.const 1717)) - (memory.copy (i32.const 60528) (i32.const 8629) (i32.const 119)) - (memory.copy (i32.const 5947) (i32.const 2308) (i32.const 658)) - (memory.copy (i32.const 4787) (i32.const 51631) (i32.const 2269)) - (memory.copy (i32.const 12617) (i32.const 19197) (i32.const 833)) - (memory.copy (i32.const 11854) (i32.const 46505) (i32.const 3300)) - (memory.copy (i32.const 11376) (i32.const 45012) (i32.const 2281)) - (memory.copy (i32.const 34186) (i32.const 6697) (i32.const 2572)) - (memory.copy (i32.const 4936) (i32.const 1690) (i32.const 1328)) - (memory.copy (i32.const 63164) (i32.const 7637) (i32.const 1670)) - (memory.copy (i32.const 44568) (i32.const 18344) (i32.const 33)) - (memory.copy (i32.const 43918) (i32.const 22348) (i32.const 1427)) - (memory.copy (i32.const 46637) (i32.const 49819) (i32.const 1434)) - (memory.copy (i32.const 63684) (i32.const 8755) (i32.const 834)) - (memory.copy (i32.const 33485) (i32.const 20131) (i32.const 3317)) - (memory.copy (i32.const 40575) (i32.const 54317) (i32.const 3201)) - (memory.copy (i32.const 25812) (i32.const 59254) (i32.const 2452)) - (memory.copy (i32.const 19678) (i32.const 56882) (i32.const 346)) - (memory.copy (i32.const 15852) (i32.const 35914) (i32.const 2430)) - (memory.copy (i32.const 11824) (i32.const 35574) (i32.const 300)) - (memory.copy (i32.const 59427) (i32.const 13957) (i32.const 3153)) - (memory.copy (i32.const 34299) (i32.const 60594) (i32.const 1281)) - (memory.copy (i32.const 8964) (i32.const 12276) (i32.const 943)) - (memory.copy (i32.const 2827) (i32.const 10425) (i32.const 1887)) - (memory.copy (i32.const 43194) (i32.const 43910) (i32.const 738)) - (memory.copy (i32.const 63038) (i32.const 18949) (i32.const 122)) - (memory.copy (i32.const 24044) (i32.const 44761) (i32.const 1755)) - (memory.copy (i32.const 22608) (i32.const 14755) (i32.const 702)) - (memory.copy (i32.const 11284) (i32.const 26579) (i32.const 1830)) - (memory.copy (i32.const 23092) (i32.const 20471) (i32.const 1064)) - (memory.copy (i32.const 57248) (i32.const 54770) (i32.const 2631)) - (memory.copy (i32.const 25492) (i32.const 1025) (i32.const 3113)) - (memory.copy (i32.const 49588) (i32.const 44220) (i32.const 975)) - (memory.copy (i32.const 28280) (i32.const 41722) (i32.const 2336)) - (memory.copy (i32.const 61289) (i32.const 230) (i32.const 2872)) - (memory.copy (i32.const 22480) (i32.const 52506) (i32.const 2197)) - (memory.copy (i32.const 40553) (i32.const 9578) (i32.const 1958)) - (memory.copy (i32.const 29004) (i32.const 20862) (i32.const 2186)) - (memory.copy (i32.const 53029) (i32.const 43955) (i32.const 1037)) - (memory.copy (i32.const 25476) (i32.const 35667) (i32.const 1650)) - (memory.copy (i32.const 58516) (i32.const 45819) (i32.const 1986)) - (memory.copy (i32.const 38297) (i32.const 5776) (i32.const 1955)) - (memory.copy (i32.const 28503) (i32.const 55364) (i32.const 2368)) - (memory.copy (i32.const 62619) (i32.const 18108) (i32.const 1356)) - (memory.copy (i32.const 50149) (i32.const 13861) (i32.const 382)) - (memory.copy (i32.const 16904) (i32.const 36341) (i32.const 1900)) - (memory.copy (i32.const 48098) (i32.const 11358) (i32.const 2807)) - (memory.copy (i32.const 28512) (i32.const 40362) (i32.const 323)) - (memory.copy (i32.const 35506) (i32.const 27856) (i32.const 1670)) - (memory.copy (i32.const 62970) (i32.const 53332) (i32.const 1341)) - (memory.copy (i32.const 14133) (i32.const 46312) (i32.const 644)) - (memory.copy (i32.const 29030) (i32.const 19074) (i32.const 496)) - (memory.copy (i32.const 44952) (i32.const 47577) (i32.const 2784)) - (memory.copy (i32.const 39559) (i32.const 44661) (i32.const 1350)) - (memory.copy (i32.const 10352) (i32.const 29274) (i32.const 1475)) - (memory.copy (i32.const 46911) (i32.const 46178) (i32.const 1467)) - (memory.copy (i32.const 4905) (i32.const 28740) (i32.const 1895)) - (memory.copy (i32.const 38012) (i32.const 57253) (i32.const 1751)) - (memory.copy (i32.const 26446) (i32.const 27223) (i32.const 1127)) - (memory.copy (i32.const 58835) (i32.const 24657) (i32.const 1063)) - (memory.copy (i32.const 61356) (i32.const 38790) (i32.const 766)) - (memory.copy (i32.const 44160) (i32.const 2284) (i32.const 1520)) - (memory.copy (i32.const 32740) (i32.const 47237) (i32.const 3014)) - (memory.copy (i32.const 11148) (i32.const 21260) (i32.const 1011)) - (memory.copy (i32.const 7665) (i32.const 31612) (i32.const 3034)) - (memory.copy (i32.const 18044) (i32.const 12987) (i32.const 3320)) - (memory.copy (i32.const 57306) (i32.const 55905) (i32.const 308)) - (memory.copy (i32.const 24675) (i32.const 16815) (i32.const 1155)) - (memory.copy (i32.const 19900) (i32.const 10115) (i32.const 722)) - (memory.copy (i32.const 2921) (i32.const 5935) (i32.const 2370)) - (memory.copy (i32.const 32255) (i32.const 50095) (i32.const 2926)) - (memory.copy (i32.const 15126) (i32.const 17299) (i32.const 2607)) - (memory.copy (i32.const 45575) (i32.const 28447) (i32.const 2045)) - (memory.copy (i32.const 55149) (i32.const 36113) (i32.const 2596)) - (memory.copy (i32.const 28461) (i32.const 54157) (i32.const 1168)) - (memory.copy (i32.const 47951) (i32.const 53385) (i32.const 3137)) - (memory.copy (i32.const 30646) (i32.const 45155) (i32.const 2649)) - (memory.copy (i32.const 5057) (i32.const 4295) (i32.const 52)) - (memory.copy (i32.const 6692) (i32.const 24195) (i32.const 441)) - (memory.copy (i32.const 32984) (i32.const 27117) (i32.const 3445)) - (memory.copy (i32.const 32530) (i32.const 59372) (i32.const 2785)) - (memory.copy (i32.const 34361) (i32.const 8962) (i32.const 2406)) - (memory.copy (i32.const 17893) (i32.const 54538) (i32.const 3381)) - (memory.copy (i32.const 22685) (i32.const 44151) (i32.const 136)) - (memory.copy (i32.const 59089) (i32.const 7077) (i32.const 1045)) - (memory.copy (i32.const 42945) (i32.const 55028) (i32.const 2389)) - (memory.copy (i32.const 44693) (i32.const 20138) (i32.const 877)) - (memory.copy (i32.const 36810) (i32.const 25196) (i32.const 3447)) - (memory.copy (i32.const 45742) (i32.const 31888) (i32.const 854)) - (memory.copy (i32.const 24236) (i32.const 31866) (i32.const 1377)) - (memory.copy (i32.const 33778) (i32.const 692) (i32.const 1594)) - (memory.copy (i32.const 60618) (i32.const 18585) (i32.const 2987)) - (memory.copy (i32.const 50370) (i32.const 41271) (i32.const 1406)) + (memory.fill (${memtype}.const 17767) (i32.const 1) (${memtype}.const 1344)) + (memory.fill (${memtype}.const 39017) (i32.const 2) (${memtype}.const 1055)) + (memory.fill (${memtype}.const 56401) (i32.const 3) (${memtype}.const 988)) + (memory.fill (${memtype}.const 37962) (i32.const 4) (${memtype}.const 322)) + (memory.fill (${memtype}.const 7977) (i32.const 5) (${memtype}.const 1994)) + (memory.fill (${memtype}.const 22714) (i32.const 6) (${memtype}.const 3036)) + (memory.fill (${memtype}.const 16882) (i32.const 7) (${memtype}.const 2372)) + (memory.fill (${memtype}.const 43491) (i32.const 8) (${memtype}.const 835)) + (memory.fill (${memtype}.const 124) (i32.const 9) (${memtype}.const 1393)) + (memory.fill (${memtype}.const 2132) (i32.const 10) (${memtype}.const 2758)) + (memory.fill (${memtype}.const 8987) (i32.const 11) (${memtype}.const 3098)) + (memory.fill (${memtype}.const 52711) (i32.const 12) (${memtype}.const 741)) + (memory.fill (${memtype}.const 3958) (i32.const 13) (${memtype}.const 2823)) + (memory.fill (${memtype}.const 49715) (i32.const 14) (${memtype}.const 1280)) + (memory.fill (${memtype}.const 50377) (i32.const 15) (${memtype}.const 1466)) + (memory.fill (${memtype}.const 20493) (i32.const 16) (${memtype}.const 3158)) + (memory.fill (${memtype}.const 47665) (i32.const 17) (${memtype}.const 544)) + (memory.fill (${memtype}.const 12451) (i32.const 18) (${memtype}.const 2669)) + (memory.fill (${memtype}.const 24869) (i32.const 19) (${memtype}.const 2651)) + (memory.fill (${memtype}.const 45317) (i32.const 20) (${memtype}.const 1570)) + (memory.fill (${memtype}.const 43096) (i32.const 21) (${memtype}.const 1691)) + (memory.fill (${memtype}.const 33886) (i32.const 22) (${memtype}.const 646)) + (memory.fill (${memtype}.const 48555) (i32.const 23) (${memtype}.const 1858)) + (memory.fill (${memtype}.const 53453) (i32.const 24) (${memtype}.const 2657)) + (memory.fill (${memtype}.const 30363) (i32.const 25) (${memtype}.const 981)) + (memory.fill (${memtype}.const 9300) (i32.const 26) (${memtype}.const 1807)) + (memory.fill (${memtype}.const 50190) (i32.const 27) (${memtype}.const 487)) + (memory.fill (${memtype}.const 62753) (i32.const 28) (${memtype}.const 530)) + (memory.fill (${memtype}.const 36316) (i32.const 29) (${memtype}.const 943)) + (memory.fill (${memtype}.const 6768) (i32.const 30) (${memtype}.const 381)) + (memory.fill (${memtype}.const 51262) (i32.const 31) (${memtype}.const 3089)) + (memory.fill (${memtype}.const 49729) (i32.const 32) (${memtype}.const 658)) + (memory.fill (${memtype}.const 44540) (i32.const 33) (${memtype}.const 1702)) + (memory.fill (${memtype}.const 33342) (i32.const 34) (${memtype}.const 1092)) + (memory.fill (${memtype}.const 50814) (i32.const 35) (${memtype}.const 1410)) + (memory.fill (${memtype}.const 47594) (i32.const 36) (${memtype}.const 2204)) + (memory.fill (${memtype}.const 54123) (i32.const 37) (${memtype}.const 2394)) + (memory.fill (${memtype}.const 55183) (i32.const 38) (${memtype}.const 250)) + (memory.fill (${memtype}.const 22620) (i32.const 39) (${memtype}.const 2097)) + (memory.fill (${memtype}.const 17132) (i32.const 40) (${memtype}.const 3264)) + (memory.fill (${memtype}.const 54331) (i32.const 41) (${memtype}.const 3299)) + (memory.fill (${memtype}.const 39474) (i32.const 42) (${memtype}.const 2796)) + (memory.fill (${memtype}.const 36156) (i32.const 43) (${memtype}.const 2070)) + (memory.fill (${memtype}.const 35308) (i32.const 44) (${memtype}.const 2763)) + (memory.fill (${memtype}.const 32731) (i32.const 45) (${memtype}.const 312)) + (memory.fill (${memtype}.const 63746) (i32.const 46) (${memtype}.const 192)) + (memory.fill (${memtype}.const 30974) (i32.const 47) (${memtype}.const 596)) + (memory.fill (${memtype}.const 16635) (i32.const 48) (${memtype}.const 501)) + (memory.fill (${memtype}.const 57002) (i32.const 49) (${memtype}.const 686)) + (memory.fill (${memtype}.const 34299) (i32.const 50) (${memtype}.const 385)) + (memory.fill (${memtype}.const 60881) (i32.const 51) (${memtype}.const 903)) + (memory.fill (${memtype}.const 61445) (i32.const 52) (${memtype}.const 2390)) + (memory.fill (${memtype}.const 46972) (i32.const 53) (${memtype}.const 1441)) + (memory.fill (${memtype}.const 25973) (i32.const 54) (${memtype}.const 3162)) + (memory.fill (${memtype}.const 5566) (i32.const 55) (${memtype}.const 2135)) + (memory.fill (${memtype}.const 35977) (i32.const 56) (${memtype}.const 519)) + (memory.fill (${memtype}.const 44892) (i32.const 57) (${memtype}.const 3280)) + (memory.fill (${memtype}.const 46760) (i32.const 58) (${memtype}.const 1678)) + (memory.fill (${memtype}.const 46607) (i32.const 59) (${memtype}.const 3168)) + (memory.fill (${memtype}.const 22449) (i32.const 60) (${memtype}.const 1441)) + (memory.fill (${memtype}.const 58609) (i32.const 61) (${memtype}.const 663)) + (memory.fill (${memtype}.const 32261) (i32.const 62) (${memtype}.const 1671)) + (memory.fill (${memtype}.const 3063) (i32.const 63) (${memtype}.const 721)) + (memory.fill (${memtype}.const 34025) (i32.const 64) (${memtype}.const 84)) + (memory.fill (${memtype}.const 33338) (i32.const 65) (${memtype}.const 2029)) + (memory.fill (${memtype}.const 36810) (i32.const 66) (${memtype}.const 29)) + (memory.fill (${memtype}.const 19147) (i32.const 67) (${memtype}.const 3034)) + (memory.fill (${memtype}.const 12616) (i32.const 68) (${memtype}.const 1043)) + (memory.fill (${memtype}.const 18276) (i32.const 69) (${memtype}.const 3324)) + (memory.fill (${memtype}.const 4639) (i32.const 70) (${memtype}.const 1091)) + (memory.fill (${memtype}.const 16158) (i32.const 71) (${memtype}.const 1997)) + (memory.fill (${memtype}.const 18204) (i32.const 72) (${memtype}.const 2259)) + (memory.fill (${memtype}.const 50532) (i32.const 73) (${memtype}.const 3189)) + (memory.fill (${memtype}.const 11028) (i32.const 74) (${memtype}.const 1968)) + (memory.fill (${memtype}.const 15962) (i32.const 75) (${memtype}.const 1455)) + (memory.fill (${memtype}.const 45406) (i32.const 76) (${memtype}.const 1177)) + (memory.fill (${memtype}.const 54137) (i32.const 77) (${memtype}.const 1568)) + (memory.fill (${memtype}.const 33083) (i32.const 78) (${memtype}.const 1642)) + (memory.fill (${memtype}.const 61028) (i32.const 79) (${memtype}.const 3284)) + (memory.fill (${memtype}.const 51729) (i32.const 80) (${memtype}.const 223)) + (memory.fill (${memtype}.const 4361) (i32.const 81) (${memtype}.const 2171)) + (memory.fill (${memtype}.const 57514) (i32.const 82) (${memtype}.const 1322)) + (memory.fill (${memtype}.const 55724) (i32.const 83) (${memtype}.const 2648)) + (memory.fill (${memtype}.const 24091) (i32.const 84) (${memtype}.const 1045)) + (memory.fill (${memtype}.const 43183) (i32.const 85) (${memtype}.const 3097)) + (memory.fill (${memtype}.const 32307) (i32.const 86) (${memtype}.const 2796)) + (memory.fill (${memtype}.const 3811) (i32.const 87) (${memtype}.const 2010)) + (memory.fill (${memtype}.const 54856) (i32.const 88) (${memtype}.const 0)) + (memory.fill (${memtype}.const 49941) (i32.const 89) (${memtype}.const 2069)) + (memory.fill (${memtype}.const 20411) (i32.const 90) (${memtype}.const 2896)) + (memory.fill (${memtype}.const 33826) (i32.const 91) (${memtype}.const 192)) + (memory.fill (${memtype}.const 9402) (i32.const 92) (${memtype}.const 2195)) + (memory.fill (${memtype}.const 12413) (i32.const 93) (${memtype}.const 24)) + (memory.fill (${memtype}.const 14091) (i32.const 94) (${memtype}.const 577)) + (memory.fill (${memtype}.const 44058) (i32.const 95) (${memtype}.const 2089)) + (memory.fill (${memtype}.const 36735) (i32.const 96) (${memtype}.const 3436)) + (memory.fill (${memtype}.const 23288) (i32.const 97) (${memtype}.const 2765)) + (memory.fill (${memtype}.const 6392) (i32.const 98) (${memtype}.const 830)) + (memory.fill (${memtype}.const 33307) (i32.const 99) (${memtype}.const 1938)) + (memory.fill (${memtype}.const 21941) (i32.const 100) (${memtype}.const 2750)) + (memory.copy (${memtype}.const 59214) (${memtype}.const 54248) (${memtype}.const 2098)) + (memory.copy (${memtype}.const 63026) (${memtype}.const 39224) (${memtype}.const 230)) + (memory.copy (${memtype}.const 51833) (${memtype}.const 23629) (${memtype}.const 2300)) + (memory.copy (${memtype}.const 6708) (${memtype}.const 23996) (${memtype}.const 639)) + (memory.copy (${memtype}.const 6990) (${memtype}.const 33399) (${memtype}.const 1097)) + (memory.copy (${memtype}.const 19403) (${memtype}.const 10348) (${memtype}.const 3197)) + (memory.copy (${memtype}.const 27308) (${memtype}.const 54406) (${memtype}.const 100)) + (memory.copy (${memtype}.const 27221) (${memtype}.const 43682) (${memtype}.const 1717)) + (memory.copy (${memtype}.const 60528) (${memtype}.const 8629) (${memtype}.const 119)) + (memory.copy (${memtype}.const 5947) (${memtype}.const 2308) (${memtype}.const 658)) + (memory.copy (${memtype}.const 4787) (${memtype}.const 51631) (${memtype}.const 2269)) + (memory.copy (${memtype}.const 12617) (${memtype}.const 19197) (${memtype}.const 833)) + (memory.copy (${memtype}.const 11854) (${memtype}.const 46505) (${memtype}.const 3300)) + (memory.copy (${memtype}.const 11376) (${memtype}.const 45012) (${memtype}.const 2281)) + (memory.copy (${memtype}.const 34186) (${memtype}.const 6697) (${memtype}.const 2572)) + (memory.copy (${memtype}.const 4936) (${memtype}.const 1690) (${memtype}.const 1328)) + (memory.copy (${memtype}.const 63164) (${memtype}.const 7637) (${memtype}.const 1670)) + (memory.copy (${memtype}.const 44568) (${memtype}.const 18344) (${memtype}.const 33)) + (memory.copy (${memtype}.const 43918) (${memtype}.const 22348) (${memtype}.const 1427)) + (memory.copy (${memtype}.const 46637) (${memtype}.const 49819) (${memtype}.const 1434)) + (memory.copy (${memtype}.const 63684) (${memtype}.const 8755) (${memtype}.const 834)) + (memory.copy (${memtype}.const 33485) (${memtype}.const 20131) (${memtype}.const 3317)) + (memory.copy (${memtype}.const 40575) (${memtype}.const 54317) (${memtype}.const 3201)) + (memory.copy (${memtype}.const 25812) (${memtype}.const 59254) (${memtype}.const 2452)) + (memory.copy (${memtype}.const 19678) (${memtype}.const 56882) (${memtype}.const 346)) + (memory.copy (${memtype}.const 15852) (${memtype}.const 35914) (${memtype}.const 2430)) + (memory.copy (${memtype}.const 11824) (${memtype}.const 35574) (${memtype}.const 300)) + (memory.copy (${memtype}.const 59427) (${memtype}.const 13957) (${memtype}.const 3153)) + (memory.copy (${memtype}.const 34299) (${memtype}.const 60594) (${memtype}.const 1281)) + (memory.copy (${memtype}.const 8964) (${memtype}.const 12276) (${memtype}.const 943)) + (memory.copy (${memtype}.const 2827) (${memtype}.const 10425) (${memtype}.const 1887)) + (memory.copy (${memtype}.const 43194) (${memtype}.const 43910) (${memtype}.const 738)) + (memory.copy (${memtype}.const 63038) (${memtype}.const 18949) (${memtype}.const 122)) + (memory.copy (${memtype}.const 24044) (${memtype}.const 44761) (${memtype}.const 1755)) + (memory.copy (${memtype}.const 22608) (${memtype}.const 14755) (${memtype}.const 702)) + (memory.copy (${memtype}.const 11284) (${memtype}.const 26579) (${memtype}.const 1830)) + (memory.copy (${memtype}.const 23092) (${memtype}.const 20471) (${memtype}.const 1064)) + (memory.copy (${memtype}.const 57248) (${memtype}.const 54770) (${memtype}.const 2631)) + (memory.copy (${memtype}.const 25492) (${memtype}.const 1025) (${memtype}.const 3113)) + (memory.copy (${memtype}.const 49588) (${memtype}.const 44220) (${memtype}.const 975)) + (memory.copy (${memtype}.const 28280) (${memtype}.const 41722) (${memtype}.const 2336)) + (memory.copy (${memtype}.const 61289) (${memtype}.const 230) (${memtype}.const 2872)) + (memory.copy (${memtype}.const 22480) (${memtype}.const 52506) (${memtype}.const 2197)) + (memory.copy (${memtype}.const 40553) (${memtype}.const 9578) (${memtype}.const 1958)) + (memory.copy (${memtype}.const 29004) (${memtype}.const 20862) (${memtype}.const 2186)) + (memory.copy (${memtype}.const 53029) (${memtype}.const 43955) (${memtype}.const 1037)) + (memory.copy (${memtype}.const 25476) (${memtype}.const 35667) (${memtype}.const 1650)) + (memory.copy (${memtype}.const 58516) (${memtype}.const 45819) (${memtype}.const 1986)) + (memory.copy (${memtype}.const 38297) (${memtype}.const 5776) (${memtype}.const 1955)) + (memory.copy (${memtype}.const 28503) (${memtype}.const 55364) (${memtype}.const 2368)) + (memory.copy (${memtype}.const 62619) (${memtype}.const 18108) (${memtype}.const 1356)) + (memory.copy (${memtype}.const 50149) (${memtype}.const 13861) (${memtype}.const 382)) + (memory.copy (${memtype}.const 16904) (${memtype}.const 36341) (${memtype}.const 1900)) + (memory.copy (${memtype}.const 48098) (${memtype}.const 11358) (${memtype}.const 2807)) + (memory.copy (${memtype}.const 28512) (${memtype}.const 40362) (${memtype}.const 323)) + (memory.copy (${memtype}.const 35506) (${memtype}.const 27856) (${memtype}.const 1670)) + (memory.copy (${memtype}.const 62970) (${memtype}.const 53332) (${memtype}.const 1341)) + (memory.copy (${memtype}.const 14133) (${memtype}.const 46312) (${memtype}.const 644)) + (memory.copy (${memtype}.const 29030) (${memtype}.const 19074) (${memtype}.const 496)) + (memory.copy (${memtype}.const 44952) (${memtype}.const 47577) (${memtype}.const 2784)) + (memory.copy (${memtype}.const 39559) (${memtype}.const 44661) (${memtype}.const 1350)) + (memory.copy (${memtype}.const 10352) (${memtype}.const 29274) (${memtype}.const 1475)) + (memory.copy (${memtype}.const 46911) (${memtype}.const 46178) (${memtype}.const 1467)) + (memory.copy (${memtype}.const 4905) (${memtype}.const 28740) (${memtype}.const 1895)) + (memory.copy (${memtype}.const 38012) (${memtype}.const 57253) (${memtype}.const 1751)) + (memory.copy (${memtype}.const 26446) (${memtype}.const 27223) (${memtype}.const 1127)) + (memory.copy (${memtype}.const 58835) (${memtype}.const 24657) (${memtype}.const 1063)) + (memory.copy (${memtype}.const 61356) (${memtype}.const 38790) (${memtype}.const 766)) + (memory.copy (${memtype}.const 44160) (${memtype}.const 2284) (${memtype}.const 1520)) + (memory.copy (${memtype}.const 32740) (${memtype}.const 47237) (${memtype}.const 3014)) + (memory.copy (${memtype}.const 11148) (${memtype}.const 21260) (${memtype}.const 1011)) + (memory.copy (${memtype}.const 7665) (${memtype}.const 31612) (${memtype}.const 3034)) + (memory.copy (${memtype}.const 18044) (${memtype}.const 12987) (${memtype}.const 3320)) + (memory.copy (${memtype}.const 57306) (${memtype}.const 55905) (${memtype}.const 308)) + (memory.copy (${memtype}.const 24675) (${memtype}.const 16815) (${memtype}.const 1155)) + (memory.copy (${memtype}.const 19900) (${memtype}.const 10115) (${memtype}.const 722)) + (memory.copy (${memtype}.const 2921) (${memtype}.const 5935) (${memtype}.const 2370)) + (memory.copy (${memtype}.const 32255) (${memtype}.const 50095) (${memtype}.const 2926)) + (memory.copy (${memtype}.const 15126) (${memtype}.const 17299) (${memtype}.const 2607)) + (memory.copy (${memtype}.const 45575) (${memtype}.const 28447) (${memtype}.const 2045)) + (memory.copy (${memtype}.const 55149) (${memtype}.const 36113) (${memtype}.const 2596)) + (memory.copy (${memtype}.const 28461) (${memtype}.const 54157) (${memtype}.const 1168)) + (memory.copy (${memtype}.const 47951) (${memtype}.const 53385) (${memtype}.const 3137)) + (memory.copy (${memtype}.const 30646) (${memtype}.const 45155) (${memtype}.const 2649)) + (memory.copy (${memtype}.const 5057) (${memtype}.const 4295) (${memtype}.const 52)) + (memory.copy (${memtype}.const 6692) (${memtype}.const 24195) (${memtype}.const 441)) + (memory.copy (${memtype}.const 32984) (${memtype}.const 27117) (${memtype}.const 3445)) + (memory.copy (${memtype}.const 32530) (${memtype}.const 59372) (${memtype}.const 2785)) + (memory.copy (${memtype}.const 34361) (${memtype}.const 8962) (${memtype}.const 2406)) + (memory.copy (${memtype}.const 17893) (${memtype}.const 54538) (${memtype}.const 3381)) + (memory.copy (${memtype}.const 22685) (${memtype}.const 44151) (${memtype}.const 136)) + (memory.copy (${memtype}.const 59089) (${memtype}.const 7077) (${memtype}.const 1045)) + (memory.copy (${memtype}.const 42945) (${memtype}.const 55028) (${memtype}.const 2389)) + (memory.copy (${memtype}.const 44693) (${memtype}.const 20138) (${memtype}.const 877)) + (memory.copy (${memtype}.const 36810) (${memtype}.const 25196) (${memtype}.const 3447)) + (memory.copy (${memtype}.const 45742) (${memtype}.const 31888) (${memtype}.const 854)) + (memory.copy (${memtype}.const 24236) (${memtype}.const 31866) (${memtype}.const 1377)) + (memory.copy (${memtype}.const 33778) (${memtype}.const 692) (${memtype}.const 1594)) + (memory.copy (${memtype}.const 60618) (${memtype}.const 18585) (${memtype}.const 2987)) + (memory.copy (${memtype}.const 50370) (${memtype}.const 41271) (${memtype}.const 1406)) ) - ${checkRangeCode()}) + ${checkRangeCode(memtype)}) (invoke "test") `); -checkRange(0, 124, 0); -checkRange(124, 1517, 9); -checkRange(1517, 2132, 0); -checkRange(2132, 2827, 10); -checkRange(2827, 2921, 92); -checkRange(2921, 3538, 83); -checkRange(3538, 3786, 77); -checkRange(3786, 4042, 97); -checkRange(4042, 4651, 99); -checkRange(4651, 5057, 0); -checkRange(5057, 5109, 99); -checkRange(5109, 5291, 0); -checkRange(5291, 5524, 72); -checkRange(5524, 5691, 92); -checkRange(5691, 6552, 83); -checkRange(6552, 7133, 77); -checkRange(7133, 7665, 99); -checkRange(7665, 8314, 0); -checkRange(8314, 8360, 62); -checkRange(8360, 8793, 86); -checkRange(8793, 8979, 83); -checkRange(8979, 9373, 79); -checkRange(9373, 9518, 95); -checkRange(9518, 9934, 59); -checkRange(9934, 10087, 77); -checkRange(10087, 10206, 5); -checkRange(10206, 10230, 77); -checkRange(10230, 10249, 41); -checkRange(10249, 11148, 83); -checkRange(11148, 11356, 74); -checkRange(11356, 11380, 93); -checkRange(11380, 11939, 74); -checkRange(11939, 12159, 68); -checkRange(12159, 12575, 83); -checkRange(12575, 12969, 79); -checkRange(12969, 13114, 95); -checkRange(13114, 14133, 59); -checkRange(14133, 14404, 76); -checkRange(14404, 14428, 57); -checkRange(14428, 14458, 59); -checkRange(14458, 14580, 32); -checkRange(14580, 14777, 89); -checkRange(14777, 15124, 59); -checkRange(15124, 15126, 36); -checkRange(15126, 15192, 100); -checkRange(15192, 15871, 96); -checkRange(15871, 15998, 95); -checkRange(15998, 17017, 59); -checkRange(17017, 17288, 76); -checkRange(17288, 17312, 57); -checkRange(17312, 17342, 59); -checkRange(17342, 17464, 32); -checkRange(17464, 17661, 89); -checkRange(17661, 17727, 59); -checkRange(17727, 17733, 5); -checkRange(17733, 17893, 96); -checkRange(17893, 18553, 77); -checkRange(18553, 18744, 42); -checkRange(18744, 18801, 76); -checkRange(18801, 18825, 57); -checkRange(18825, 18876, 59); -checkRange(18876, 18885, 77); -checkRange(18885, 18904, 41); -checkRange(18904, 19567, 83); -checkRange(19567, 20403, 96); -checkRange(20403, 21274, 77); -checkRange(21274, 21364, 100); -checkRange(21364, 21468, 74); -checkRange(21468, 21492, 93); -checkRange(21492, 22051, 74); -checkRange(22051, 22480, 68); -checkRange(22480, 22685, 100); -checkRange(22685, 22694, 68); -checkRange(22694, 22821, 10); -checkRange(22821, 22869, 100); -checkRange(22869, 24107, 97); -checkRange(24107, 24111, 37); -checkRange(24111, 24236, 77); -checkRange(24236, 24348, 72); -checkRange(24348, 24515, 92); -checkRange(24515, 24900, 83); -checkRange(24900, 25136, 95); -checkRange(25136, 25182, 85); -checkRange(25182, 25426, 68); -checkRange(25426, 25613, 89); -checkRange(25613, 25830, 96); -checkRange(25830, 26446, 100); -checkRange(26446, 26517, 10); -checkRange(26517, 27468, 92); -checkRange(27468, 27503, 95); -checkRange(27503, 27573, 77); -checkRange(27573, 28245, 92); -checkRange(28245, 28280, 95); -checkRange(28280, 29502, 77); -checkRange(29502, 29629, 42); -checkRange(29629, 30387, 83); -checkRange(30387, 30646, 77); -checkRange(30646, 31066, 92); -checkRange(31066, 31131, 77); -checkRange(31131, 31322, 42); -checkRange(31322, 31379, 76); -checkRange(31379, 31403, 57); -checkRange(31403, 31454, 59); -checkRange(31454, 31463, 77); -checkRange(31463, 31482, 41); -checkRange(31482, 31649, 83); -checkRange(31649, 31978, 72); -checkRange(31978, 32145, 92); -checkRange(32145, 32530, 83); -checkRange(32530, 32766, 95); -checkRange(32766, 32812, 85); -checkRange(32812, 33056, 68); -checkRange(33056, 33660, 89); -checkRange(33660, 33752, 59); -checkRange(33752, 33775, 36); -checkRange(33775, 33778, 32); -checkRange(33778, 34603, 9); -checkRange(34603, 35218, 0); -checkRange(35218, 35372, 10); -checkRange(35372, 35486, 77); -checkRange(35486, 35605, 5); -checkRange(35605, 35629, 77); -checkRange(35629, 35648, 41); -checkRange(35648, 36547, 83); -checkRange(36547, 36755, 74); -checkRange(36755, 36767, 93); -checkRange(36767, 36810, 83); -checkRange(36810, 36839, 100); -checkRange(36839, 37444, 96); -checkRange(37444, 38060, 100); -checkRange(38060, 38131, 10); -checkRange(38131, 39082, 92); -checkRange(39082, 39117, 95); -checkRange(39117, 39187, 77); -checkRange(39187, 39859, 92); -checkRange(39859, 39894, 95); -checkRange(39894, 40257, 77); -checkRange(40257, 40344, 89); -checkRange(40344, 40371, 59); -checkRange(40371, 40804, 77); -checkRange(40804, 40909, 5); -checkRange(40909, 42259, 92); -checkRange(42259, 42511, 77); -checkRange(42511, 42945, 83); -checkRange(42945, 43115, 77); -checkRange(43115, 43306, 42); -checkRange(43306, 43363, 76); -checkRange(43363, 43387, 57); -checkRange(43387, 43438, 59); -checkRange(43438, 43447, 77); -checkRange(43447, 43466, 41); -checkRange(43466, 44129, 83); -checkRange(44129, 44958, 96); -checkRange(44958, 45570, 77); -checkRange(45570, 45575, 92); -checkRange(45575, 45640, 77); -checkRange(45640, 45742, 42); -checkRange(45742, 45832, 72); -checkRange(45832, 45999, 92); -checkRange(45999, 46384, 83); -checkRange(46384, 46596, 95); -checkRange(46596, 46654, 92); -checkRange(46654, 47515, 83); -checkRange(47515, 47620, 77); -checkRange(47620, 47817, 79); -checkRange(47817, 47951, 95); -checkRange(47951, 48632, 100); -checkRange(48632, 48699, 97); -checkRange(48699, 48703, 37); -checkRange(48703, 49764, 77); -checkRange(49764, 49955, 42); -checkRange(49955, 50012, 76); -checkRange(50012, 50036, 57); -checkRange(50036, 50087, 59); -checkRange(50087, 50096, 77); -checkRange(50096, 50115, 41); -checkRange(50115, 50370, 83); -checkRange(50370, 51358, 92); -checkRange(51358, 51610, 77); -checkRange(51610, 51776, 83); -checkRange(51776, 51833, 89); -checkRange(51833, 52895, 100); -checkRange(52895, 53029, 97); -checkRange(53029, 53244, 68); -checkRange(53244, 54066, 100); -checkRange(54066, 54133, 97); -checkRange(54133, 54137, 37); -checkRange(54137, 55198, 77); -checkRange(55198, 55389, 42); -checkRange(55389, 55446, 76); -checkRange(55446, 55470, 57); -checkRange(55470, 55521, 59); -checkRange(55521, 55530, 77); -checkRange(55530, 55549, 41); -checkRange(55549, 56212, 83); -checkRange(56212, 57048, 96); -checkRange(57048, 58183, 77); -checkRange(58183, 58202, 41); -checkRange(58202, 58516, 83); -checkRange(58516, 58835, 95); -checkRange(58835, 58855, 77); -checkRange(58855, 59089, 95); -checkRange(59089, 59145, 77); -checkRange(59145, 59677, 99); -checkRange(59677, 60134, 0); -checkRange(60134, 60502, 89); -checkRange(60502, 60594, 59); -checkRange(60594, 60617, 36); -checkRange(60617, 60618, 32); -checkRange(60618, 60777, 42); -checkRange(60777, 60834, 76); -checkRange(60834, 60858, 57); -checkRange(60858, 60909, 59); -checkRange(60909, 60918, 77); -checkRange(60918, 60937, 41); -checkRange(60937, 61600, 83); -checkRange(61600, 62436, 96); -checkRange(62436, 63307, 77); -checkRange(63307, 63397, 100); -checkRange(63397, 63501, 74); -checkRange(63501, 63525, 93); -checkRange(63525, 63605, 74); -checkRange(63605, 63704, 100); -checkRange(63704, 63771, 97); -checkRange(63771, 63775, 37); -checkRange(63775, 64311, 77); -checkRange(64311, 64331, 26); -checkRange(64331, 64518, 92); -checkRange(64518, 64827, 11); -checkRange(64827, 64834, 26); -checkRange(64834, 65536, 0); + checkRange(memtype, 0, 124, 0); + checkRange(memtype, 124, 1517, 9); + checkRange(memtype, 1517, 2132, 0); + checkRange(memtype, 2132, 2827, 10); + checkRange(memtype, 2827, 2921, 92); + checkRange(memtype, 2921, 3538, 83); + checkRange(memtype, 3538, 3786, 77); + checkRange(memtype, 3786, 4042, 97); + checkRange(memtype, 4042, 4651, 99); + checkRange(memtype, 4651, 5057, 0); + checkRange(memtype, 5057, 5109, 99); + checkRange(memtype, 5109, 5291, 0); + checkRange(memtype, 5291, 5524, 72); + checkRange(memtype, 5524, 5691, 92); + checkRange(memtype, 5691, 6552, 83); + checkRange(memtype, 6552, 7133, 77); + checkRange(memtype, 7133, 7665, 99); + checkRange(memtype, 7665, 8314, 0); + checkRange(memtype, 8314, 8360, 62); + checkRange(memtype, 8360, 8793, 86); + checkRange(memtype, 8793, 8979, 83); + checkRange(memtype, 8979, 9373, 79); + checkRange(memtype, 9373, 9518, 95); + checkRange(memtype, 9518, 9934, 59); + checkRange(memtype, 9934, 10087, 77); + checkRange(memtype, 10087, 10206, 5); + checkRange(memtype, 10206, 10230, 77); + checkRange(memtype, 10230, 10249, 41); + checkRange(memtype, 10249, 11148, 83); + checkRange(memtype, 11148, 11356, 74); + checkRange(memtype, 11356, 11380, 93); + checkRange(memtype, 11380, 11939, 74); + checkRange(memtype, 11939, 12159, 68); + checkRange(memtype, 12159, 12575, 83); + checkRange(memtype, 12575, 12969, 79); + checkRange(memtype, 12969, 13114, 95); + checkRange(memtype, 13114, 14133, 59); + checkRange(memtype, 14133, 14404, 76); + checkRange(memtype, 14404, 14428, 57); + checkRange(memtype, 14428, 14458, 59); + checkRange(memtype, 14458, 14580, 32); + checkRange(memtype, 14580, 14777, 89); + checkRange(memtype, 14777, 15124, 59); + checkRange(memtype, 15124, 15126, 36); + checkRange(memtype, 15126, 15192, 100); + checkRange(memtype, 15192, 15871, 96); + checkRange(memtype, 15871, 15998, 95); + checkRange(memtype, 15998, 17017, 59); + checkRange(memtype, 17017, 17288, 76); + checkRange(memtype, 17288, 17312, 57); + checkRange(memtype, 17312, 17342, 59); + checkRange(memtype, 17342, 17464, 32); + checkRange(memtype, 17464, 17661, 89); + checkRange(memtype, 17661, 17727, 59); + checkRange(memtype, 17727, 17733, 5); + checkRange(memtype, 17733, 17893, 96); + checkRange(memtype, 17893, 18553, 77); + checkRange(memtype, 18553, 18744, 42); + checkRange(memtype, 18744, 18801, 76); + checkRange(memtype, 18801, 18825, 57); + checkRange(memtype, 18825, 18876, 59); + checkRange(memtype, 18876, 18885, 77); + checkRange(memtype, 18885, 18904, 41); + checkRange(memtype, 18904, 19567, 83); + checkRange(memtype, 19567, 20403, 96); + checkRange(memtype, 20403, 21274, 77); + checkRange(memtype, 21274, 21364, 100); + checkRange(memtype, 21364, 21468, 74); + checkRange(memtype, 21468, 21492, 93); + checkRange(memtype, 21492, 22051, 74); + checkRange(memtype, 22051, 22480, 68); + checkRange(memtype, 22480, 22685, 100); + checkRange(memtype, 22685, 22694, 68); + checkRange(memtype, 22694, 22821, 10); + checkRange(memtype, 22821, 22869, 100); + checkRange(memtype, 22869, 24107, 97); + checkRange(memtype, 24107, 24111, 37); + checkRange(memtype, 24111, 24236, 77); + checkRange(memtype, 24236, 24348, 72); + checkRange(memtype, 24348, 24515, 92); + checkRange(memtype, 24515, 24900, 83); + checkRange(memtype, 24900, 25136, 95); + checkRange(memtype, 25136, 25182, 85); + checkRange(memtype, 25182, 25426, 68); + checkRange(memtype, 25426, 25613, 89); + checkRange(memtype, 25613, 25830, 96); + checkRange(memtype, 25830, 26446, 100); + checkRange(memtype, 26446, 26517, 10); + checkRange(memtype, 26517, 27468, 92); + checkRange(memtype, 27468, 27503, 95); + checkRange(memtype, 27503, 27573, 77); + checkRange(memtype, 27573, 28245, 92); + checkRange(memtype, 28245, 28280, 95); + checkRange(memtype, 28280, 29502, 77); + checkRange(memtype, 29502, 29629, 42); + checkRange(memtype, 29629, 30387, 83); + checkRange(memtype, 30387, 30646, 77); + checkRange(memtype, 30646, 31066, 92); + checkRange(memtype, 31066, 31131, 77); + checkRange(memtype, 31131, 31322, 42); + checkRange(memtype, 31322, 31379, 76); + checkRange(memtype, 31379, 31403, 57); + checkRange(memtype, 31403, 31454, 59); + checkRange(memtype, 31454, 31463, 77); + checkRange(memtype, 31463, 31482, 41); + checkRange(memtype, 31482, 31649, 83); + checkRange(memtype, 31649, 31978, 72); + checkRange(memtype, 31978, 32145, 92); + checkRange(memtype, 32145, 32530, 83); + checkRange(memtype, 32530, 32766, 95); + checkRange(memtype, 32766, 32812, 85); + checkRange(memtype, 32812, 33056, 68); + checkRange(memtype, 33056, 33660, 89); + checkRange(memtype, 33660, 33752, 59); + checkRange(memtype, 33752, 33775, 36); + checkRange(memtype, 33775, 33778, 32); + checkRange(memtype, 33778, 34603, 9); + checkRange(memtype, 34603, 35218, 0); + checkRange(memtype, 35218, 35372, 10); + checkRange(memtype, 35372, 35486, 77); + checkRange(memtype, 35486, 35605, 5); + checkRange(memtype, 35605, 35629, 77); + checkRange(memtype, 35629, 35648, 41); + checkRange(memtype, 35648, 36547, 83); + checkRange(memtype, 36547, 36755, 74); + checkRange(memtype, 36755, 36767, 93); + checkRange(memtype, 36767, 36810, 83); + checkRange(memtype, 36810, 36839, 100); + checkRange(memtype, 36839, 37444, 96); + checkRange(memtype, 37444, 38060, 100); + checkRange(memtype, 38060, 38131, 10); + checkRange(memtype, 38131, 39082, 92); + checkRange(memtype, 39082, 39117, 95); + checkRange(memtype, 39117, 39187, 77); + checkRange(memtype, 39187, 39859, 92); + checkRange(memtype, 39859, 39894, 95); + checkRange(memtype, 39894, 40257, 77); + checkRange(memtype, 40257, 40344, 89); + checkRange(memtype, 40344, 40371, 59); + checkRange(memtype, 40371, 40804, 77); + checkRange(memtype, 40804, 40909, 5); + checkRange(memtype, 40909, 42259, 92); + checkRange(memtype, 42259, 42511, 77); + checkRange(memtype, 42511, 42945, 83); + checkRange(memtype, 42945, 43115, 77); + checkRange(memtype, 43115, 43306, 42); + checkRange(memtype, 43306, 43363, 76); + checkRange(memtype, 43363, 43387, 57); + checkRange(memtype, 43387, 43438, 59); + checkRange(memtype, 43438, 43447, 77); + checkRange(memtype, 43447, 43466, 41); + checkRange(memtype, 43466, 44129, 83); + checkRange(memtype, 44129, 44958, 96); + checkRange(memtype, 44958, 45570, 77); + checkRange(memtype, 45570, 45575, 92); + checkRange(memtype, 45575, 45640, 77); + checkRange(memtype, 45640, 45742, 42); + checkRange(memtype, 45742, 45832, 72); + checkRange(memtype, 45832, 45999, 92); + checkRange(memtype, 45999, 46384, 83); + checkRange(memtype, 46384, 46596, 95); + checkRange(memtype, 46596, 46654, 92); + checkRange(memtype, 46654, 47515, 83); + checkRange(memtype, 47515, 47620, 77); + checkRange(memtype, 47620, 47817, 79); + checkRange(memtype, 47817, 47951, 95); + checkRange(memtype, 47951, 48632, 100); + checkRange(memtype, 48632, 48699, 97); + checkRange(memtype, 48699, 48703, 37); + checkRange(memtype, 48703, 49764, 77); + checkRange(memtype, 49764, 49955, 42); + checkRange(memtype, 49955, 50012, 76); + checkRange(memtype, 50012, 50036, 57); + checkRange(memtype, 50036, 50087, 59); + checkRange(memtype, 50087, 50096, 77); + checkRange(memtype, 50096, 50115, 41); + checkRange(memtype, 50115, 50370, 83); + checkRange(memtype, 50370, 51358, 92); + checkRange(memtype, 51358, 51610, 77); + checkRange(memtype, 51610, 51776, 83); + checkRange(memtype, 51776, 51833, 89); + checkRange(memtype, 51833, 52895, 100); + checkRange(memtype, 52895, 53029, 97); + checkRange(memtype, 53029, 53244, 68); + checkRange(memtype, 53244, 54066, 100); + checkRange(memtype, 54066, 54133, 97); + checkRange(memtype, 54133, 54137, 37); + checkRange(memtype, 54137, 55198, 77); + checkRange(memtype, 55198, 55389, 42); + checkRange(memtype, 55389, 55446, 76); + checkRange(memtype, 55446, 55470, 57); + checkRange(memtype, 55470, 55521, 59); + checkRange(memtype, 55521, 55530, 77); + checkRange(memtype, 55530, 55549, 41); + checkRange(memtype, 55549, 56212, 83); + checkRange(memtype, 56212, 57048, 96); + checkRange(memtype, 57048, 58183, 77); + checkRange(memtype, 58183, 58202, 41); + checkRange(memtype, 58202, 58516, 83); + checkRange(memtype, 58516, 58835, 95); + checkRange(memtype, 58835, 58855, 77); + checkRange(memtype, 58855, 59089, 95); + checkRange(memtype, 59089, 59145, 77); + checkRange(memtype, 59145, 59677, 99); + checkRange(memtype, 59677, 60134, 0); + checkRange(memtype, 60134, 60502, 89); + checkRange(memtype, 60502, 60594, 59); + checkRange(memtype, 60594, 60617, 36); + checkRange(memtype, 60617, 60618, 32); + checkRange(memtype, 60618, 60777, 42); + checkRange(memtype, 60777, 60834, 76); + checkRange(memtype, 60834, 60858, 57); + checkRange(memtype, 60858, 60909, 59); + checkRange(memtype, 60909, 60918, 77); + checkRange(memtype, 60918, 60937, 41); + checkRange(memtype, 60937, 61600, 83); + checkRange(memtype, 61600, 62436, 96); + checkRange(memtype, 62436, 63307, 77); + checkRange(memtype, 63307, 63397, 100); + checkRange(memtype, 63397, 63501, 74); + checkRange(memtype, 63501, 63525, 93); + checkRange(memtype, 63525, 63605, 74); + checkRange(memtype, 63605, 63704, 100); + checkRange(memtype, 63704, 63771, 97); + checkRange(memtype, 63771, 63775, 37); + checkRange(memtype, 63775, 64311, 77); + checkRange(memtype, 64311, 64331, 26); + checkRange(memtype, 64331, 64518, 92); + checkRange(memtype, 64518, 64827, 11); + checkRange(memtype, 64827, 64834, 26); + checkRange(memtype, 64834, 65536, 0); +} diff --git a/test/meta/generate_memory_fill.js b/test/meta/generate_memory_fill.js index 3a8f485f1..b04c3738a 100644 --- a/test/meta/generate_memory_fill.js +++ b/test/meta/generate_memory_fill.js @@ -3,155 +3,160 @@ print_origin("generate_memory_fill.js"); -let PREAMBLE = - `(memory 1 1) - ${checkRangeCode()}`; +for ( const memtype of ['i32', 'i64'] ) { -// Range valid -print( + const decltype = memtype == 'i64' ? ' i64' : ''; + + let PREAMBLE = + `(memory${decltype} 1 1) + ${checkRangeCode(memtype)}`; + + // Range valid + print( ` (module ${PREAMBLE} (func (export "test") - (memory.fill (i32.const 0xFF00) (i32.const 0x55) (i32.const 256)))) + (memory.fill (${memtype}.const 0xFF00) (i32.const 0x55) (${memtype}.const 256)))) (invoke "test") `); -checkRange(0x00000, 0x0FF00, 0x00) -checkRange(0x0FF00, 0x10000, 0x55) + checkRange(memtype, 0x00000, 0x0FF00, 0x00) + checkRange(memtype, 0x0FF00, 0x10000, 0x55) -// Range invalid -print( + // Range invalid + print( `(module ${PREAMBLE} (func (export "test") - (memory.fill (i32.const 0xFF00) (i32.const 0x55) (i32.const 257)))) + (memory.fill (${memtype}.const 0xFF00) (i32.const 0x55) (${memtype}.const 257)))) (assert_trap (invoke "test") "out of bounds memory access") `); -// Wraparound the end of 32-bit offset space -print( + // Wraparound the end of 32-bit offset space + print( `(module ${PREAMBLE} (func (export "test") - (memory.fill (i32.const 0xFFFFFF00) (i32.const 0x55) (i32.const 257)))) + (memory.fill (${memtype}.const 0xFFFFFF00) (i32.const 0x55) (${memtype}.const 257)))) (assert_trap (invoke "test") "out of bounds memory access") `); -// Zero len with offset in-bounds is a no-op -print( + // Zero len with offset in-bounds is a no-op + print( `(module ${PREAMBLE} (func (export "test") - (memory.fill (i32.const 0x12) (i32.const 0x55) (i32.const 0)))) + (memory.fill (${memtype}.const 0x12) (i32.const 0x55) (${memtype}.const 0)))) (invoke "test") `); -checkRange(0x00000, 0x10000, 0x00); + checkRange(memtype, 0x00000, 0x10000, 0x00); -// Zero len with offset out-of-bounds at the end of memory is allowed -print( + // Zero len with offset out-of-bounds at the end of memory is allowed + print( `(module ${PREAMBLE} (func (export "test") - (memory.fill (i32.const 0x10000) (i32.const 0x55) (i32.const 0)))) + (memory.fill (${memtype}.const 0x10000) (i32.const 0x55) (${memtype}.const 0)))) (invoke "test") `); -// Zero len with offset out-of-bounds past the end of memory is not allowed -print( + // Zero len with offset out-of-bounds past the end of memory is not allowed + print( `(module ${PREAMBLE} (func (export "test") - (memory.fill (i32.const 0x20000) (i32.const 0x55) (i32.const 0)))) + (memory.fill (${memtype}.const 0x20000) (i32.const 0x55) (${memtype}.const 0)))) (assert_trap (invoke "test") "out of bounds memory access") `); -// Very large range -print( + // Very large range + print( `(module ${PREAMBLE} (func (export "test") - (memory.fill (i32.const 0x1) (i32.const 0xAA) (i32.const 0xFFFE)))) + (memory.fill (${memtype}.const 0x1) (i32.const 0xAA) (${memtype}.const 0xFFFE)))) (invoke "test") `); -checkRange(0x00000, 0x00001, 0x00); -checkRange(0x00001, 0x0FFFF, 0xAA); -checkRange(0x0FFFF, 0x10000, 0x00); + checkRange(memtype, 0x00000, 0x00001, 0x00); + checkRange(memtype, 0x00001, 0x0FFFF, 0xAA); + checkRange(memtype, 0x0FFFF, 0x10000, 0x00); -// Sequencing -print( + // Sequencing + print( ` (module ${PREAMBLE} (func (export "test") - (memory.fill (i32.const 0x12) (i32.const 0x55) (i32.const 10)) - (memory.fill (i32.const 0x15) (i32.const 0xAA) (i32.const 4)))) + (memory.fill (${memtype}.const 0x12) (i32.const 0x55) (${memtype}.const 10)) + (memory.fill (${memtype}.const 0x15) (i32.const 0xAA) (${memtype}.const 4)))) (invoke "test") `); -checkRange(0x0, 0x12+0, 0x00); -checkRange(0x12+0, 0x12+3, 0x55); -checkRange(0x12+3, 0x12+7, 0xAA); -checkRange(0x12+7, 0x12+10, 0x55); -checkRange(0x12+10, 0x10000, 0x00); + checkRange(memtype, 0x0, 0x12+0, 0x00); + checkRange(memtype, 0x12+0, 0x12+3, 0x55); + checkRange(memtype, 0x12+3, 0x12+7, 0xAA); + checkRange(memtype, 0x12+7, 0x12+10, 0x55); + checkRange(memtype, 0x12+10, 0x10000, 0x00); -// Sundry compilation failures. + // Sundry compilation failures. -// Module doesn't have a memory. -print( + // Module doesn't have a memory. + print( `(assert_invalid (module (func (export "testfn") - (memory.fill (i32.const 10) (i32.const 20) (i32.const 30)))) + (memory.fill (${memtype}.const 10) (i32.const 20) (${memtype}.const 30)))) "unknown memory 0") `); -// Invalid argument types. TODO: We can add anyref, funcref, etc here. -{ - const tys = ['i32', 'f32', 'i64', 'f64']; - for (let ty1 of tys) { - for (let ty2 of tys) { - for (let ty3 of tys) { - if (ty1 == 'i32' && ty2 == 'i32' && ty3 == 'i32') - continue; // this is the only valid case - print( + // Invalid argument types. TODO: We can add anyref, funcref, etc here. + { + const tys = ['i32', 'f32', 'i64', 'f64']; + for (let ty1 of tys) { + for (let ty2 of tys) { + for (let ty3 of tys) { + if (ty1 == memtype && ty2 == 'i32' && ty3 == memtype) + continue; // this is the only valid case + print( `(assert_invalid (module - (memory 1 1) + (memory${decltype} 1 1) (func (export "testfn") (memory.fill (${ty1}.const 10) (${ty2}.const 20) (${ty3}.const 30)))) "type mismatch") `); - }}} -} + }}} + } -// memory.fill: out of bounds, and should not perform a partial fill. -// -// Arithmetic overflow of memory offset + len should not affect the behavior, we -// should still fill up to the limit. + // memory.fill: out of bounds, and should not perform a partial fill. + // + // Arithmetic overflow of memory offset + len should not affect the behavior, we + // should still fill up to the limit. -function mem_fill(min, max, shared, backup, write=backup*2) { - print( + function mem_fill(min, max, shared, backup, write=backup*2) { + print( `(module - (memory ${min} ${max} ${shared}) - ${checkRangeCode()} - (func (export "run") (param $offs i32) (param $val i32) (param $len i32) + (memory${decltype} ${min} ${max} ${shared}) + ${checkRangeCode(memtype)} + (func (export "run") (param $offs ${memtype}) (param $val i32) (param $len ${memtype}) (memory.fill (local.get $offs) (local.get $val) (local.get $len)))) `); - // A fill past the end should throw *and* not have performed a partial fill - let offs = min*PAGESIZE - backup; - let val = 37; - print( -`(assert_trap (invoke "run" (i32.const ${offs}) (i32.const ${val}) (i32.const ${write})) + // A fill past the end should throw *and* not have performed a partial fill + let offs = min*PAGESIZE - backup; + let val = 37; + print( +`(assert_trap (invoke "run" (${memtype}.const ${offs}) (i32.const ${val}) (${memtype}.const ${write})) "out of bounds memory access") `); - checkRange(0, min, 0); -} - -mem_fill(1, 1, "", 256); -mem_fill(1, 1, "", 257); -mem_fill(1, 1, "", 257, 0xFFFFFFFF); // offs + len overflows 32-bit - -if (WITH_SHARED_MEMORY) { - mem_fill(2, 4, "shared", 256); - mem_fill(2, 4, "shared", 257); - mem_fill(2, 4, "shared", 257, 0xFFFFFFFF); // offs + len overflows 32-bit + checkRange(memtype, 0, min, 0); + } + + mem_fill(1, 1, "", 256); + mem_fill(1, 1, "", 257); + mem_fill(1, 1, "", 257, 0xFFFFFFFF); // offs + len overflows 32-bit + + if (WITH_SHARED_MEMORY) { + mem_fill(2, 4, "shared", 256); + mem_fill(2, 4, "shared", 257); + mem_fill(2, 4, "shared", 257, 0xFFFFFFFF); // offs + len overflows 32-bit + } } diff --git a/test/meta/generate_memory_init.js b/test/meta/generate_memory_init.js index f8075cc33..4ba4325ed 100644 --- a/test/meta/generate_memory_init.js +++ b/test/meta/generate_memory_init.js @@ -3,64 +3,67 @@ print_origin("generate_memory_init.js"); -// In-bounds tests. +for ( const memtype of ['i32', 'i64'] ) { -function mem_test(instruction, expected_result_vector) { - print( + const decltype = memtype == 'i64' ? ' i64' : ''; + + // In-bounds tests. + function mem_test(instruction, expected_result_vector) { + print( ` (module - (memory (export "memory0") 1 1) - (data (i32.const 2) "\\03\\01\\04\\01") + (memory (export "memory0")${decltype} 1 1) + (data (${memtype}.const 2) "\\03\\01\\04\\01") (data "\\02\\07\\01\\08") - (data (i32.const 12) "\\07\\05\\02\\03\\06") + (data (${memtype}.const 12) "\\07\\05\\02\\03\\06") (data "\\05\\09\\02\\07\\06") (func (export "test") ${instruction}) - (func (export "load8_u") (param i32) (result i32) + (func (export "load8_u") (param ${memtype}) (result i32) (i32.load8_u (local.get 0)))) (invoke "test") `); - for (let i = 0; i < expected_result_vector.length; i++) { - print(`(assert_return (invoke "load8_u" (i32.const ${i})) (i32.const ${expected_result_vector[i]}))`); - } -} + for (let i = 0; i < expected_result_vector.length; i++) { + print(`(assert_return (invoke "load8_u" (${memtype}.const ${i})) (i32.const ${expected_result_vector[i]}))`); + } + } -const e = 0; + const e = 0; -// This just gives the initial state of the memory, with its active -// initialisers applied. -mem_test("(nop)", - [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); + // This just gives the initial state of the memory, with its active + // initialisers applied. + mem_test("(nop)", + [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); -// Passive init that overwrites all-zero entries -mem_test("(memory.init 1 (i32.const 7) (i32.const 0) (i32.const 4))", - [e,e,3,1,4, 1,e,2,7,1, 8,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); + // Passive init that overwrites all-zero entries + mem_test(`(memory.init 1 (${memtype}.const 7) (${memtype}.const 0) (${memtype}.const 4))`, + [e,e,3,1,4, 1,e,2,7,1, 8,e,7,5,2, 3,6,e,e,e, e,e,e,e,e, e,e,e,e,e]); -// Passive init that overwrites existing active-init-created entries -mem_test("(memory.init 3 (i32.const 15) (i32.const 1) (i32.const 3))", - [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 9,2,7,e,e, e,e,e,e,e, e,e,e,e,e]); + // Passive init that overwrites existing active-init-created entries + mem_test(`(memory.init 3 (${memtype}.const 15) (${memtype}.const 1) (${memtype}.const 3))`, + [e,e,3,1,4, 1,e,e,e,e, e,e,7,5,2, 9,2,7,e,e, e,e,e,e,e, e,e,e,e,e]); -// Perform active and passive initialisation and then multiple copies -mem_test(`(memory.init 1 (i32.const 7) (i32.const 0) (i32.const 4)) + // Perform active and passive initialisation and then multiple copies + mem_test(`(memory.init 1 (${memtype}.const 7) (${memtype}.const 0) (${memtype}.const 4)) (data.drop 1) - (memory.init 3 (i32.const 15) (i32.const 1) (i32.const 3)) + (memory.init 3 (${memtype}.const 15) (${memtype}.const 1) (${memtype}.const 3)) (data.drop 3) - (memory.copy (i32.const 20) (i32.const 15) (i32.const 5)) - (memory.copy (i32.const 21) (i32.const 29) (i32.const 1)) - (memory.copy (i32.const 24) (i32.const 10) (i32.const 1)) - (memory.copy (i32.const 13) (i32.const 11) (i32.const 4)) - (memory.copy (i32.const 19) (i32.const 20) (i32.const 5))`, - [e,e,3,1,4, 1,e,2,7,1, 8,e,7,e,7, 5,2,7,e,9, e,7,e,8,8, e,e,e,e,e]); + (memory.copy (${memtype}.const 20) (${memtype}.const 15) (${memtype}.const 5)) + (memory.copy (${memtype}.const 21) (${memtype}.const 29) (${memtype}.const 1)) + (memory.copy (${memtype}.const 24) (${memtype}.const 10) (${memtype}.const 1)) + (memory.copy (${memtype}.const 13) (${memtype}.const 11) (${memtype}.const 4)) + (memory.copy (${memtype}.const 19) (${memtype}.const 20) (${memtype}.const 5))`, + [e,e,3,1,4, 1,e,2,7,1, 8,e,7,e,7, 5,2,7,e,9, e,7,e,8,8, e,e,e,e,e]); -// Miscellaneous + // Miscellaneous -let PREAMBLE = - `(memory 1) + let PREAMBLE = + `(memory${decltype} 1) (data "\\37")`; -// drop with no memory -print( + // drop with no memory + print( `(assert_invalid (module (func (export "test") @@ -68,8 +71,8 @@ print( "unknown data segment") `); -// drop with data seg ix out of range -print( + // drop with data seg ix out of range + print( `(assert_invalid (module ${PREAMBLE} @@ -78,8 +81,8 @@ print( "unknown data segment") `); -// drop, then drop -print( + // drop, then drop + print( `(module ${PREAMBLE} (func (export "test") @@ -88,147 +91,147 @@ print( (invoke "test") `); -// drop, then init -print( + // drop, then init + print( `(module ${PREAMBLE} (func (export "test") (data.drop 0) - (memory.init 0 (i32.const 1234) (i32.const 1) (i32.const 1)))) + (memory.init 0 (${memtype}.const 1234) (${memtype}.const 1) (${memtype}.const 1)))) (assert_trap (invoke "test") "out of bounds memory access") `); -// init with data seg ix indicating an active segment -print( + // init with data seg ix indicating an active segment + print( `(module - (memory 1) - (data (i32.const 0) "\\37") + (memory${decltype} 1) + (data (${memtype}.const 0) "\\37") (func (export "test") - (memory.init 0 (i32.const 1234) (i32.const 1) (i32.const 1)))) + (memory.init 0 (${memtype}.const 1234) (${memtype}.const 1) (${memtype}.const 1)))) (assert_trap (invoke "test") "out of bounds memory access") `); -// init with no memory -print( + // init with no memory + print( `(assert_invalid (module (func (export "test") - (memory.init 1 (i32.const 1234) (i32.const 1) (i32.const 1)))) + (memory.init 1 (${memtype}.const 1234) (${memtype}.const 1) (${memtype}.const 1)))) "unknown memory 0") `); -// init with data seg ix out of range -print( + // init with data seg ix out of range + print( `(assert_invalid (module ${PREAMBLE} (func (export "test") - (memory.init 1 (i32.const 1234) (i32.const 1) (i32.const 1)))) + (memory.init 1 (${memtype}.const 1234) (${memtype}.const 1) (${memtype}.const 1)))) "unknown data segment 1") `); -// init, using a data seg ix more than once is OK -print( + // init, using a data seg ix more than once is OK + print( `(module ${PREAMBLE} (func (export "test") - (memory.init 0 (i32.const 1) (i32.const 0) (i32.const 1)) - (memory.init 0 (i32.const 1) (i32.const 0) (i32.const 1)))) + (memory.init 0 (${memtype}.const 1) (${memtype}.const 0) (${memtype}.const 1)) + (memory.init 0 (${memtype}.const 1) (${memtype}.const 0) (${memtype}.const 1)))) (invoke "test") `); -// init: seg ix is valid passive, but length to copy > len of seg -print( + // init: seg ix is valid passive, but length to copy > len of seg + print( `(module ${PREAMBLE} (func (export "test") - (memory.init 0 (i32.const 1234) (i32.const 0) (i32.const 5)))) + (memory.init 0 (${memtype}.const 1234) (${memtype}.const 0) (${memtype}.const 5)))) (assert_trap (invoke "test") "out of bounds memory access") `); -// init: seg ix is valid passive, but implies copying beyond end of seg -print( + // init: seg ix is valid passive, but implies copying beyond end of seg + print( `(module ${PREAMBLE} (func (export "test") - (memory.init 0 (i32.const 1234) (i32.const 2) (i32.const 3)))) + (memory.init 0 (${memtype}.const 1234) (${memtype}.const 2) (${memtype}.const 3)))) (assert_trap (invoke "test") "out of bounds memory access") `); -// init: seg ix is valid passive, but implies copying beyond end of dst -print( + // init: seg ix is valid passive, but implies copying beyond end of dst + print( `(module ${PREAMBLE} (func (export "test") - (memory.init 0 (i32.const 0xFFFE) (i32.const 1) (i32.const 3)))) + (memory.init 0 (${memtype}.const 0xFFFE) (${memtype}.const 1) (${memtype}.const 3)))) (assert_trap (invoke "test") "out of bounds memory access") `); -// init: seg ix is valid passive, src offset past the end, zero len is invalid -print( + // init: seg ix is valid passive, src offset past the end, zero len is invalid + print( `(module ${PREAMBLE} (func (export "test") - (memory.init 0 (i32.const 1234) (i32.const 4) (i32.const 0)))) + (memory.init 0 (${memtype}.const 1234) (${memtype}.const 4) (${memtype}.const 0)))) (assert_trap (invoke "test") "out of bounds memory access") `); -// init: seg ix is valid passive, zero len, src offset at the end -print( + // init: seg ix is valid passive, zero len, src offset at the end + print( `(module ${PREAMBLE} (func (export "test") - (memory.init 0 (i32.const 1234) (i32.const 1) (i32.const 0)))) + (memory.init 0 (${memtype}.const 1234) (${memtype}.const 1) (${memtype}.const 0)))) (invoke "test") `); -// init: seg ix is valid passive, dst offset past the end, zero len is invalid -print( + // init: seg ix is valid passive, dst offset past the end, zero len is invalid + print( `(module ${PREAMBLE} (func (export "test") - (memory.init 0 (i32.const 0x10001) (i32.const 0) (i32.const 0)))) + (memory.init 0 (${memtype}.const 0x10001) (${memtype}.const 0) (${memtype}.const 0)))) (assert_trap (invoke "test") "out of bounds memory access") `); -// init: seg ix is valid passive, zero len, but dst offset at the end -print( + // init: seg ix is valid passive, zero len, but dst offset at the end + print( `(module ${PREAMBLE} (func (export "test") - (memory.init 0 (i32.const 0x10000) (i32.const 0) (i32.const 0)))) + (memory.init 0 (${memtype}.const 0x10000) (${memtype}.const 0) (${memtype}.const 0)))) (invoke "test") `); -// init: seg ix is valid passive, zero len, dst and src offsets at the end -print( + // init: seg ix is valid passive, zero len, dst and src offsets at the end + print( `(module ${PREAMBLE} (func (export "test") - (memory.init 0 (i32.const 0x10000) (i32.const 1) (i32.const 0)))) + (memory.init 0 (${memtype}.const 0x10000) (${memtype}.const 1) (${memtype}.const 0)))) (invoke "test") `); -// init: seg ix is valid passive, src and dst offset past the end, zero len is -// invalid -print( + // init: seg ix is valid passive, src and dst offset past the end, zero len is + // invalid + print( `(module ${PREAMBLE} (func (export "test") - (memory.init 0 (i32.const 0x10001) (i32.const 4) (i32.const 0)))) + (memory.init 0 (${memtype}.const 0x10001) (${memtype}.const 4) (${memtype}.const 0)))) (assert_trap (invoke "test") "out of bounds memory access") `); -// invalid argument types. TODO: can add anyfunc etc here. -{ - const tys = ['i32', 'f32', 'i64', 'f64']; + // invalid argument types. TODO: can add anyfunc etc here. + { + const tys = ['i32', 'f32', 'i64', 'f64']; - for (let ty1 of tys) { - for (let ty2 of tys) { - for (let ty3 of tys) { - if (ty1 == 'i32' && ty2 == 'i32' && ty3 == 'i32') - continue; // this is the only valid case - print( + for (let ty1 of tys) { + for (let ty2 of tys) { + for (let ty3 of tys) { + if (ty1 == 'i32' && ty2 == 'i32' && ty3 == 'i32') + continue; // this is the only valid case + print( `(assert_invalid (module ${PREAMBLE} @@ -236,68 +239,68 @@ print( (memory.init 0 (${ty1}.const 1) (${ty2}.const 1) (${ty3}.const 1)))) "type mismatch") `); - }}} -} + }}} + } -// memory.init: out of bounds of the memory or the segment, but should perform -// the operation up to the appropriate bound. -// -// Arithmetic overflow of memoffset + len or of bufferoffset + len should not -// affect the behavior. + // memory.init: out of bounds of the memory or the segment, but should perform + // the operation up to the appropriate bound. + // + // Arithmetic overflow of memoffset + len or of bufferoffset + len should not + // affect the behavior. -// Note, the length of the data segment is 16. -const mem_init_len = 16; + // Note, the length of the data segment is 16. + const mem_init_len = 16; -function mem_init(min, max, shared, backup, write) { - print( + function mem_init(min, max, shared, backup, write) { + print( `(module - (memory ${min} ${max} ${shared}) + (memory${decltype} ${min} ${max} ${shared}) (data "\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42\\42") - ${checkRangeCode()} - (func (export "run") (param $offs i32) (param $len i32) - (memory.init 0 (local.get $offs) (i32.const 0) (local.get $len)))) + ${checkRangeCode(memtype)} + (func (export "run") (param $offs ${memtype}) (param $len ${memtype}) + (memory.init 0 (local.get $offs) (${memtype}.const 0) (local.get $len)))) `); - // A fill writing past the end of the memory should throw *and* have filled - // all the way up to the end. - // - // A fill reading past the end of the segment should throw *and* have filled - // memory with as much data as was available. - let offs = min*PAGESIZE - backup; - print( + // A fill writing past the end of the memory should throw *and* have filled + // all the way up to the end. + // + // A fill reading past the end of the segment should throw *and* have filled + // memory with as much data as was available. + let offs = min*PAGESIZE - backup; + print( `(assert_trap (invoke "run" (i32.const ${offs}) (i32.const ${write})) "out of bounds memory access") `); - checkRange(0, min, 0); -} - -// We exceed the bounds of the memory but not of the data segment -mem_init(1, 1, "", Math.floor(mem_init_len/2), mem_init_len); -mem_init(1, 1, "", Math.floor(mem_init_len/2)+1, mem_init_len); -if (WITH_SHARED_MEMORY) { - mem_init(2, 4, "shared", Math.floor(mem_init_len/2), mem_init_len); - mem_init(2, 4, "shared", Math.floor(mem_init_len/2)+1, mem_init_len); -} - -// We exceed the bounds of the data segment but not the memory -mem_init(1, 1, "", mem_init_len*4, mem_init_len*2-2); -mem_init(1, 1, "", mem_init_len*4-1, mem_init_len*2-1); -if (WITH_SHARED_MEMORY) { - mem_init(2, 4, "shared", mem_init_len*4, mem_init_len*2-2); - mem_init(2, 4, "shared", mem_init_len*4-1, mem_init_len*2-1); -} - -// We arithmetically overflow the memory limit but not the segment limit -mem_init(1, "", "", Math.floor(mem_init_len/2), 0xFFFFFF00); - -// We arithmetically overflow the segment limit but not the memory limit -mem_init(1, "", "", PAGESIZE, 0xFFFFFFFC); - -// Test that the data segment index is properly encoded as an unsigned (not -// signed) LEB. -print( + checkRange(0, min, 0); + } + + // We exceed the bounds of the memory but not of the data segment + mem_init(1, 1, "", Math.floor(mem_init_len/2), mem_init_len); + mem_init(1, 1, "", Math.floor(mem_init_len/2)+1, mem_init_len); + if (WITH_SHARED_MEMORY) { + mem_init(2, 4, "shared", Math.floor(mem_init_len/2), mem_init_len); + mem_init(2, 4, "shared", Math.floor(mem_init_len/2)+1, mem_init_len); + } + + // We exceed the bounds of the data segment but not the memory + mem_init(1, 1, "", mem_init_len*4, mem_init_len*2-2); + mem_init(1, 1, "", mem_init_len*4-1, mem_init_len*2-1); + if (WITH_SHARED_MEMORY) { + mem_init(2, 4, "shared", mem_init_len*4, mem_init_len*2-2); + mem_init(2, 4, "shared", mem_init_len*4-1, mem_init_len*2-1); + } + + // We arithmetically overflow the memory limit but not the segment limit + mem_init(1, "", "", Math.floor(mem_init_len/2), 0xFFFFFF00); + + // We arithmetically overflow the segment limit but not the memory limit + mem_init(1, "", "", PAGESIZE, 0xFFFFFFFC); + + // Test that the data segment index is properly encoded as an unsigned (not + // signed) LEB. + print( ` (module - (memory 1) + (memory${decltype} 1) ;; 65 data segments. 64 is the smallest positive number that is encoded ;; differently as a signed LEB. (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") @@ -309,4 +312,5 @@ print( (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") (data "") - (func (memory.init 64 (i32.const 0) (i32.const 0) (i32.const 0))))`) + (func (memory.init 64 (${memtype}.const 0) (${memtype}.const 0) (${memtype}.const 0))))`) +}