summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--README.md8
-rw-r--r--src/passes/RemoveImports.cpp2
-rw-r--r--src/s2wasm.h94
-rw-r--r--test/dot_s/alternate-lcomm.wast2
-rw-r--r--test/dot_s/asm_const.wast2
-rw-r--r--test/dot_s/basics.wast2
-rw-r--r--test/dot_s/call.wast2
-rw-r--r--test/dot_s/cfg-stackify.wast45
-rw-r--r--test/dot_s/comparisons_f32.wast2
-rw-r--r--test/dot_s/comparisons_f64.wast2
-rw-r--r--test/dot_s/comparisons_i32.wast2
-rw-r--r--test/dot_s/comparisons_i64.wast2
-rw-r--r--test/dot_s/conv.wast2
-rw-r--r--test/dot_s/copysign-casts.wast2
-rw-r--r--test/dot_s/cpus.wast2
-rw-r--r--test/dot_s/data-offset-folding.wast2
-rw-r--r--test/dot_s/dead-vreg.wast2
-rw-r--r--test/dot_s/exit.wast2
-rw-r--r--test/dot_s/f32.wast2
-rw-r--r--test/dot_s/f64.wast2
-rw-r--r--test/dot_s/fast-isel.wast2
-rw-r--r--test/dot_s/frem.wast2
-rw-r--r--test/dot_s/func.wast2
-rw-r--r--test/dot_s/global.wast4
-rw-r--r--test/dot_s/globl.wast2
-rw-r--r--test/dot_s/i32.wast2
-rw-r--r--test/dot_s/i64.wast2
-rw-r--r--test/dot_s/ident.wast4
-rw-r--r--test/dot_s/immediates.wast2
-rw-r--r--test/dot_s/lcomm-in-text-segment.wast4
-rw-r--r--test/dot_s/legalize.wast3893
-rw-r--r--test/dot_s/load-ext.wast2
-rw-r--r--test/dot_s/load-store-i1.wast2
-rw-r--r--test/dot_s/load.wast2
-rw-r--r--test/dot_s/memops.wast2
-rw-r--r--test/dot_s/memory-addr32.wast2
-rw-r--r--test/dot_s/memory-addr64.wast2
-rw-r--r--test/dot_s/minimal.wast2
-rw-r--r--test/dot_s/offset-folding.wast2
-rw-r--r--test/dot_s/offset.wast408
-rw-r--r--test/dot_s/permute.wast2
-rw-r--r--test/dot_s/phi.wast2
-rw-r--r--test/dot_s/reg-stackify.wast2
-rw-r--r--test/dot_s/relocation.wast2
-rw-r--r--test/dot_s/return-int32.wast2
-rw-r--r--test/dot_s/return-void.wast2
-rw-r--r--test/dot_s/returned.wast2
-rw-r--r--test/dot_s/select.wast2
-rw-r--r--test/dot_s/signext-zeroext.wast2
-rw-r--r--test/dot_s/store-results.wast24
-rw-r--r--test/dot_s/store-trunc.wast2
-rw-r--r--test/dot_s/store.wast2
-rw-r--r--test/dot_s/switch.wast2
-rw-r--r--test/dot_s/symbolic-offset.wast16
-rw-r--r--test/dot_s/unreachable.wast2
-rw-r--r--test/dot_s/unused-argument.wast2
-rw-r--r--test/dot_s/varargs.wast10
m---------test/experimental0
58 files changed, 4501 insertions, 101 deletions
diff --git a/README.md b/README.md
index 4e741e7e9..e9d09a17c 100644
--- a/README.md
+++ b/README.md
@@ -177,9 +177,13 @@ Same as Emscripten: MIT license.
This is separate from that. `asm2wasm` focuses on compiling asm.js to WebAssembly, as emitted by Emscripten's asm.js backend. This is useful because while in the long term Emscripten hopes to use the new WebAssembly backend, the `asm2wasm` route is a very quick and easy way to generate WebAssembly output. It will also be useful for benchmarking the new backend as it progresses.
-* How about compiling asm.js to WebAssembly (the opposite direction of `asm2wasm`)? Wouldn't that be useful for polyfilling?
+* How about compiling WebAssembly to asm.js (the opposite direction of `asm2wasm`)? Wouldn't that be useful for polyfilling?
-It would be useful, but it is a much harder task, due to some decisions made in WebAssembly. For example, WebAssembly can have control flow nested inside expressions, which can't directly map to asm.js. It could be supported by outlining the code to another function, or to compiling it down into new basic blocks and control-flow-free instructions, but it is hard to do so in a way that is both fast to do and emits code that is fast to execute. On the other hand, compiling asm.js to WebAssembly is almost straightforward.
+Experimentation with this is happening, in `wasm2asm`.
+
+This would be useful, but it is a much harder task, due to some decisions made in WebAssembly. For example, WebAssembly can have control flow nested inside expressions, which can't directly map to asm.js. It could be supported by outlining the code to another function, or to compiling it down into new basic blocks and control-flow-free instructions, but it is hard to do so in a way that is both fast to do and emits code that is fast to execute. On the other hand, compiling asm.js to WebAssembly is almost straightforward.
+
+We just have to do more work on `wasm2asm` and see how efficient we can make it.
* Can `asm2wasm` compile any asm.js code?
diff --git a/src/passes/RemoveImports.cpp b/src/passes/RemoveImports.cpp
index 06865a8f9..561002f57 100644
--- a/src/passes/RemoveImports.cpp
+++ b/src/passes/RemoveImports.cpp
@@ -31,7 +31,7 @@ struct RemoveImports : public Pass {
}
}
- void visitModule(Module *curr) {
+ void visitModule(Module *curr) override {
curr->importsMap.clear();
curr->imports.clear();
}
diff --git a/src/s2wasm.h b/src/s2wasm.h
index 3a8dd7ddb..449b6f56c 100644
--- a/src/s2wasm.h
+++ b/src/s2wasm.h
@@ -41,10 +41,10 @@ private:
std::vector<Addressing> addressings; // we fix these up
struct Relocation {
- std::vector<char>* data;
+ uint32_t* data;
Name value;
int offset;
- Relocation(std::vector<char>* data, Name value, int offset) : data(data), value(value), offset(offset) {}
+ Relocation(uint32_t* data, Name value, int offset) : data(data), value(value), offset(offset) {}
};
std::vector<Relocation> relocations;
@@ -117,14 +117,14 @@ private:
}
void skipToSep() {
- while (*s && !isspace(*s) && *s != ',' && *s != ')' && *s != ':' && *s != '+') {
+ while (*s && !isspace(*s) && *s != ',' && *s != '(' && *s != ')' && *s != ':' && *s != '+') {
s++;
}
}
Name getStrToSep() {
std::string str;
- while (*s && !isspace(*s) && *s != ',' && *s != ')' && *s != ':' && *s != '+') {
+ while (*s && !isspace(*s) && *s != ',' && *s != '(' && *s != ')' && *s != ':' && *s != '+') {
str += *s;
s++;
}
@@ -156,6 +156,21 @@ private:
return ret;
}
+ void getConst(uint32_t* target) {
+ if (isdigit(*s)) {
+ *target = getInt();
+ } else {
+ // a global constant, we need to fix it up later
+ Name name = getStrToSep();
+ int offset = 0;
+ if (*s == '+') {
+ s++;
+ offset = getInt();
+ }
+ relocations.emplace_back(target, name, offset);
+ }
+ }
+
int64_t getInt64() {
int64_t ret = 0;
bool neg = false;
@@ -267,6 +282,8 @@ private:
else if (match("type")) parseType();
else if (match("imports")) skipImports();
else if (match("data")) {}
+ else if (match("ident")) {}
+ else if (match("section")) s = strchr(s, '\n');
else abort_on("process");
}
}
@@ -451,7 +468,7 @@ private:
curr->signed_ = match("_s");
match("_u");
Name assign = getAssign();
- curr->offset = getInt();
+ getConst(&curr->offset);
curr->align = curr->bytes; // XXX
mustMatch("(");
curr->ptr = getInput();
@@ -465,7 +482,7 @@ private:
curr->bytes = bytes > 0 ? bytes : getWasmTypeSize(type);
curr->align = curr->bytes; // XXX
Name assign = getAssign();
- curr->offset = getInt();
+ getConst(&curr->offset);
mustMatch("(");
auto inputs = getInputs(2);
curr->ptr = inputs[0];
@@ -811,7 +828,13 @@ private:
}
void parseObject(Name name) {
- match(".data");
+ if (match(".data") || match(".bss")) {
+ } else if (match(".lcomm")) {
+ mustMatch(name.str);
+ skipComma();
+ getInt();
+ return;
+ }
size_t align = 16; // XXX default?
if (match(".globl")) {
mustMatch(name.str);
@@ -832,36 +855,35 @@ private:
mustMatch(name.str);
mustMatch(":");
auto raw = new std::vector<char>(); // leaked intentionally, no new allocation in Memory
- bool zero = false;
- if (match(".asciz")) {
- *raw = getQuoted();
- raw->push_back(0);
- } else if (match(".ascii")) {
- *raw = getQuoted();
- } else if (match(".zero")) {
- zero = true;
- int32_t size = getInt();
- for (size_t i = 0; i < size; i++) {
+ bool zero = true;
+ while (1) {
+ skipWhitespace();
+ if (match(".asciz")) {
+ *raw = getQuoted();
raw->push_back(0);
- }
- } else if (match(".int32")) {
- raw->resize(4);
- if (isdigit(*s)) {
- (*(int32_t*)(&(*raw)[0])) = getInt();
+ zero = false;
+ } else if (match(".ascii")) {
+ *raw = getQuoted();
+ zero = false;
+ } else if (match(".zero")) {
+ int32_t size = getInt();
+ for (size_t i = 0; i < size; i++) {
+ raw->push_back(0);
+ }
+ } else if (match(".int32")) {
+ size_t size = raw->size();
+ raw->resize(size + 4);
+ getConst((uint32_t*)&(*raw)[size]);
+ zero = false;
+ } else if (match(".int64")) {
+ size_t size = raw->size();
+ raw->resize(size + 8);
+ (*(int64_t*)(&(*raw)[size])) = getInt();
+ zero = false;
} else {
- // relocation, the address of something
- Name value = getStrToSep();
- int offset = 0;
- if (*s == '+') {
- s++;
- offset = getInt();
- }
- relocations.emplace_back(raw, value, offset);
+ break;
}
- } else if (match(".int64")) {
- raw->resize(8);
- (*(int64_t*)(&(*raw)[0])) = getInt();
- } else abort_on("data form");
+ }
skipWhitespace();
size_t size = raw->size();
if (match(".size")) {
@@ -900,7 +922,7 @@ private:
curr->type = i32;
}
for (auto& relocation : relocations) {
- (*(int32_t*)(&(*relocation.data)[0])) = staticAddresses[relocation.value] + relocation.offset;
+ *(relocation.data) = staticAddresses[relocation.value] + relocation.offset;
}
}
@@ -922,7 +944,7 @@ public:
void emscriptenGlue(std::ostream& o) {
wasm.removeImport(EMSCRIPTEN_ASM_CONST); // we create _sig versions
- o << "; METADATA: { ";
+ o << ";; METADATA: { ";
// find asmConst calls, and emit their metadata
struct AsmConstWalker : public WasmWalker {
S2WasmBuilder* parent;
diff --git a/test/dot_s/alternate-lcomm.wast b/test/dot_s/alternate-lcomm.wast
index c29134962..ff458b577 100644
--- a/test/dot_s/alternate-lcomm.wast
+++ b/test/dot_s/alternate-lcomm.wast
@@ -1,4 +1,4 @@
(module
(memory 0 4294967295)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/asm_const.wast b/test/dot_s/asm_const.wast
index 762856a8c..d9d001f72 100644
--- a/test/dot_s/asm_const.wast
+++ b/test/dot_s/asm_const.wast
@@ -15,4 +15,4 @@
)
)
)
-; METADATA: { "asmConsts": {"0": ["{ Module.print(\"hello, world!\"); }", ["vi"]]} } \ No newline at end of file
+;; METADATA: { "asmConsts": {"0": ["{ Module.print(\"hello, world!\"); }", ["vi"]]} } \ No newline at end of file
diff --git a/test/dot_s/basics.wast b/test/dot_s/basics.wast
index 7c7e43ec3..88adfaf58 100644
--- a/test/dot_s/basics.wast
+++ b/test/dot_s/basics.wast
@@ -92,4 +92,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/call.wast b/test/dot_s/call.wast
index 527fb34c1..913d2d68d 100644
--- a/test/dot_s/call.wast
+++ b/test/dot_s/call.wast
@@ -134,4 +134,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/cfg-stackify.wast b/test/dot_s/cfg-stackify.wast
index 2f6034844..547fb49af 100644
--- a/test/dot_s/cfg-stackify.wast
+++ b/test/dot_s/cfg-stackify.wast
@@ -25,6 +25,7 @@
(export "test10" $test10)
(export "test11" $test11)
(export "test12" $test12)
+ (export "test13" $test13)
(func $test0 (param $$0 i32)
(local $$1 i32)
(block $fake_return_waka123
@@ -1084,5 +1085,47 @@
)
)
)
+ (func $test13
+ (local $$0 i32)
+ (block $fake_return_waka123
+ (block
+ (block $BB22_2
+ (br_if
+ (i32.eq
+ (i32.const 0)
+ (i32.const 0)
+ )
+ $BB22_2
+ )
+ (br $fake_return_waka123)
+ )
+ (set_local $$0
+ (i32.const 0)
+ )
+ (block $BB22_4
+ (br_if
+ (get_local $$0)
+ $BB22_4
+ )
+ (set_local $$0
+ (i32.const 0)
+ )
+ )
+ (block $BB22_5
+ (br_if
+ (i32.eq
+ (i32.and
+ (get_local $$0)
+ (i32.const 1)
+ )
+ (i32.const 0)
+ )
+ $BB22_5
+ )
+ )
+ (unreachable)
+ )
+ )
+ )
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/comparisons_f32.wast b/test/dot_s/comparisons_f32.wast
index 5b00f7e60..bcb0ab5f4 100644
--- a/test/dot_s/comparisons_f32.wast
+++ b/test/dot_s/comparisons_f32.wast
@@ -267,4 +267,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/comparisons_f64.wast b/test/dot_s/comparisons_f64.wast
index 8f01136b0..097eba008 100644
--- a/test/dot_s/comparisons_f64.wast
+++ b/test/dot_s/comparisons_f64.wast
@@ -267,4 +267,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/comparisons_i32.wast b/test/dot_s/comparisons_i32.wast
index f759d5a6a..b648c1fef 100644
--- a/test/dot_s/comparisons_i32.wast
+++ b/test/dot_s/comparisons_i32.wast
@@ -131,4 +131,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/comparisons_i64.wast b/test/dot_s/comparisons_i64.wast
index 35479ecc2..15374c6b4 100644
--- a/test/dot_s/comparisons_i64.wast
+++ b/test/dot_s/comparisons_i64.wast
@@ -131,4 +131,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/conv.wast b/test/dot_s/conv.wast
index aced20e91..90a5cb8e8 100644
--- a/test/dot_s/conv.wast
+++ b/test/dot_s/conv.wast
@@ -316,4 +316,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/copysign-casts.wast b/test/dot_s/copysign-casts.wast
index 02ad07832..1fbfe760a 100644
--- a/test/dot_s/copysign-casts.wast
+++ b/test/dot_s/copysign-casts.wast
@@ -31,4 +31,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/cpus.wast b/test/dot_s/cpus.wast
index c867c77fb..5c241966c 100644
--- a/test/dot_s/cpus.wast
+++ b/test/dot_s/cpus.wast
@@ -11,4 +11,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/data-offset-folding.wast b/test/dot_s/data-offset-folding.wast
index d0715e305..a5341932b 100644
--- a/test/dot_s/data-offset-folding.wast
+++ b/test/dot_s/data-offset-folding.wast
@@ -1,4 +1,4 @@
(module
(memory 0 4294967295 (segment 2 "\00\00\00\00") (segment 408 "X\00\00\00"))
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/dead-vreg.wast b/test/dot_s/dead-vreg.wast
index 3445f5800..c2872b352 100644
--- a/test/dot_s/dead-vreg.wast
+++ b/test/dot_s/dead-vreg.wast
@@ -111,4 +111,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/exit.wast b/test/dot_s/exit.wast
index a79355b67..289673187 100644
--- a/test/dot_s/exit.wast
+++ b/test/dot_s/exit.wast
@@ -11,4 +11,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/f32.wast b/test/dot_s/f32.wast
index fa4f87de8..d8a951dcf 100644
--- a/test/dot_s/f32.wast
+++ b/test/dot_s/f32.wast
@@ -203,4 +203,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/f64.wast b/test/dot_s/f64.wast
index afb3ca9df..4b330c242 100644
--- a/test/dot_s/f64.wast
+++ b/test/dot_s/f64.wast
@@ -203,4 +203,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/fast-isel.wast b/test/dot_s/fast-isel.wast
index 967ff7776..31a81ed66 100644
--- a/test/dot_s/fast-isel.wast
+++ b/test/dot_s/fast-isel.wast
@@ -21,4 +21,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/frem.wast b/test/dot_s/frem.wast
index 08622a65a..9b89de191 100644
--- a/test/dot_s/frem.wast
+++ b/test/dot_s/frem.wast
@@ -29,4 +29,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/func.wast b/test/dot_s/func.wast
index ffb938022..01ff04a8f 100644
--- a/test/dot_s/func.wast
+++ b/test/dot_s/func.wast
@@ -72,4 +72,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/global.wast b/test/dot_s/global.wast
index 6f56eba02..0b688eb89 100644
--- a/test/dot_s/global.wast
+++ b/test/dot_s/global.wast
@@ -1,5 +1,5 @@
(module
- (memory 0 4294967295 (segment 2 "9\05\00\00") (segment 10 "\01\00\00\00") (segment 14 "*\00\00\00") (segment 18 "\ff\ff\ff\ff") (segment 33 "\00\00\00\00\00\00\00\00") (segment 42 "\ff\ff\ff\ff\ff\ff\ff\ff") (segment 54 "\00\00\00\80") (segment 58 "\00\00\00@") (segment 72 "\00\00\00\00\00\00\00\00") (segment 81 "\00\00\00\00\00\00\00\00"))
+ (memory 0 4294967295 (segment 2 "9\05\00\00"))
(import $memcpy "env" "memcpy")
(export "foo" $foo)
(export "call_memcpy" $call_memcpy)
@@ -29,4 +29,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/globl.wast b/test/dot_s/globl.wast
index 571f3d27e..4e87e4669 100644
--- a/test/dot_s/globl.wast
+++ b/test/dot_s/globl.wast
@@ -9,4 +9,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/i32.wast b/test/dot_s/i32.wast
index a1a690730..59e22d00f 100644
--- a/test/dot_s/i32.wast
+++ b/test/dot_s/i32.wast
@@ -230,4 +230,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/i64.wast b/test/dot_s/i64.wast
index cc52a53b6..14c86d830 100644
--- a/test/dot_s/i64.wast
+++ b/test/dot_s/i64.wast
@@ -230,4 +230,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/ident.wast b/test/dot_s/ident.wast
new file mode 100644
index 000000000..ff458b577
--- /dev/null
+++ b/test/dot_s/ident.wast
@@ -0,0 +1,4 @@
+(module
+ (memory 0 4294967295)
+)
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/immediates.wast b/test/dot_s/immediates.wast
index 03d4b5b85..b77e3c13d 100644
--- a/test/dot_s/immediates.wast
+++ b/test/dot_s/immediates.wast
@@ -241,4 +241,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/lcomm-in-text-segment.wast b/test/dot_s/lcomm-in-text-segment.wast
new file mode 100644
index 000000000..ff458b577
--- /dev/null
+++ b/test/dot_s/lcomm-in-text-segment.wast
@@ -0,0 +1,4 @@
+(module
+ (memory 0 4294967295)
+)
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/legalize.wast b/test/dot_s/legalize.wast
index 761d87ed4..d71f387ac 100644
--- a/test/dot_s/legalize.wast
+++ b/test/dot_s/legalize.wast
@@ -1,10 +1,13 @@
(module
(memory 0 4294967295)
+ (import $__lshrti3 "env" "__lshrti3")
+ (import $__ashlti3 "env" "__ashlti3")
(export "shl_i3" $shl_i3)
(export "shl_i53" $shl_i53)
(export "sext_in_reg_i32_i64" $sext_in_reg_i32_i64)
(export "fpext_f32_f64" $fpext_f32_f64)
(export "fpconv_f64_f32" $fpconv_f64_f32)
+ (export "bigshift" $bigshift)
(func $shl_i3 (param $$0 i32) (param $$1 i32) (param $$2 i32) (result i32)
(block $fake_return_waka123
(block
@@ -80,5 +83,3893 @@
)
)
)
+ (func $bigshift (param $$0 i32) (param $$1 i64) (param $$2 i64) (param $$3 i64) (param $$4 i64) (param $$5 i64) (param $$6 i64) (param $$7 i64) (param $$8 i64) (param $$9 i64) (param $$10 i64) (param $$11 i64) (param $$12 i64) (param $$13 i64) (param $$14 i64) (param $$15 i64) (param $$16 i64) (param $$17 i64) (param $$18 i64) (param $$19 i64) (param $$20 i64) (param $$21 i64) (param $$22 i64) (param $$23 i64) (param $$24 i64) (param $$25 i64) (param $$26 i64) (param $$27 i64) (param $$28 i64) (param $$29 i64) (param $$30 i64) (param $$31 i64) (param $$32 i64)
+ (local $$33 i64)
+ (local $$34 i64)
+ (local $$35 i64)
+ (local $$36 i64)
+ (local $$37 i64)
+ (local $$38 i64)
+ (local $$39 i64)
+ (local $$40 i64)
+ (local $$41 i64)
+ (local $$42 i64)
+ (local $$43 i64)
+ (local $$44 i64)
+ (local $$45 i64)
+ (local $$46 i64)
+ (local $$47 i64)
+ (local $$48 i64)
+ (local $$49 i64)
+ (local $$50 i32)
+ (local $$51 i64)
+ (local $$52 i32)
+ (local $$53 i32)
+ (local $$54 i32)
+ (local $$55 i32)
+ (local $$56 i32)
+ (local $$57 i32)
+ (local $$58 i64)
+ (local $$59 i64)
+ (local $$60 i64)
+ (local $$61 i32)
+ (local $$62 i32)
+ (local $$63 i64)
+ (local $$64 i64)
+ (local $$65 i64)
+ (local $$66 i32)
+ (local $$67 i32)
+ (local $$68 i64)
+ (local $$69 i32)
+ (local $$70 i32)
+ (local $$71 i64)
+ (local $$72 i32)
+ (local $$73 i32)
+ (local $$74 i32)
+ (local $$75 i64)
+ (local $$76 i64)
+ (local $$77 i64)
+ (local $$78 i64)
+ (local $$79 i64)
+ (local $$80 i64)
+ (local $$81 i64)
+ (local $$82 i64)
+ (local $$83 i64)
+ (local $$84 i64)
+ (local $$85 i64)
+ (local $$86 i64)
+ (local $$87 i32)
+ (local $$88 i64)
+ (local $$89 i64)
+ (local $$90 i64)
+ (local $$91 i32)
+ (local $$92 i64)
+ (local $$93 i64)
+ (local $$94 i32)
+ (local $$95 i64)
+ (local $$96 i64)
+ (local $$97 i64)
+ (local $$98 i64)
+ (local $$99 i64)
+ (local $$100 i64)
+ (local $$101 i64)
+ (local $$102 i64)
+ (local $$103 i64)
+ (local $$104 i64)
+ (local $$105 i64)
+ (local $$106 i64)
+ (local $$107 i64)
+ (local $$108 i64)
+ (local $$109 i32)
+ (local $$110 i64)
+ (local $$111 i64)
+ (local $$112 i64)
+ (local $$113 i64)
+ (local $$114 i64)
+ (local $$115 i64)
+ (local $$116 i64)
+ (local $$117 i64)
+ (local $$118 i64)
+ (local $$119 i64)
+ (local $$120 i64)
+ (local $$121 i64)
+ (local $$122 i64)
+ (local $$123 i64)
+ (local $$124 i64)
+ (local $$125 i64)
+ (local $$126 i64)
+ (local $$127 i64)
+ (local $$128 i64)
+ (local $$129 i64)
+ (local $$130 i64)
+ (local $$131 i64)
+ (local $$132 i64)
+ (local $$133 i64)
+ (local $$134 i64)
+ (local $$135 i32)
+ (local $$136 i64)
+ (local $$137 i64)
+ (local $$138 i64)
+ (local $$139 i64)
+ (local $$140 i64)
+ (local $$141 i64)
+ (local $$142 i64)
+ (local $$143 i64)
+ (local $$144 i64)
+ (local $$145 i64)
+ (local $$146 i64)
+ (local $$147 i64)
+ (local $$148 i64)
+ (local $$149 i64)
+ (local $$150 i64)
+ (local $$151 i64)
+ (local $$152 i64)
+ (local $$153 i64)
+ (local $$154 i64)
+ (local $$155 i64)
+ (local $$156 i64)
+ (local $$157 i64)
+ (local $$158 i64)
+ (local $$159 i64)
+ (local $$160 i64)
+ (local $$161 i64)
+ (local $$162 i64)
+ (local $$163 i64)
+ (local $$164 i64)
+ (local $$165 i64)
+ (local $$166 i64)
+ (local $$167 i64)
+ (local $$168 i64)
+ (local $$169 i64)
+ (local $$170 i64)
+ (local $$171 i64)
+ (local $$172 i64)
+ (local $$173 i64)
+ (local $$174 i64)
+ (local $$175 i64)
+ (local $$176 i64)
+ (local $$177 i64)
+ (local $$178 i64)
+ (local $$179 i64)
+ (local $$180 i64)
+ (local $$181 i32)
+ (local $$182 i32)
+ (local $$183 i32)
+ (local $$184 i32)
+ (local $$185 i32)
+ (local $$186 i32)
+ (local $$187 i32)
+ (local $$188 i32)
+ (local $$189 i32)
+ (local $$190 i32)
+ (local $$191 i32)
+ (local $$192 i32)
+ (local $$193 i32)
+ (local $$194 i32)
+ (local $$195 i32)
+ (local $$196 i32)
+ (local $$197 i32)
+ (local $$198 i32)
+ (local $$199 i32)
+ (local $$200 i32)
+ (local $$201 i32)
+ (local $$202 i32)
+ (local $$203 i32)
+ (local $$204 i32)
+ (local $$205 i32)
+ (local $$206 i32)
+ (local $$207 i32)
+ (local $$208 i32)
+ (local $$209 i32)
+ (local $$210 i32)
+ (local $$211 i32)
+ (local $$212 i32)
+ (local $$213 i32)
+ (local $$214 i32)
+ (local $$215 i32)
+ (local $$216 i32)
+ (local $$217 i32)
+ (local $$218 i32)
+ (local $$219 i32)
+ (local $$220 i32)
+ (local $$221 i32)
+ (local $$222 i32)
+ (local $$223 i32)
+ (local $$224 i32)
+ (local $$225 i32)
+ (local $$226 i32)
+ (local $$227 i32)
+ (local $$228 i32)
+ (local $$229 i32)
+ (local $$230 i32)
+ (local $$231 i32)
+ (local $$232 i32)
+ (local $$233 i32)
+ (local $$234 i32)
+ (local $$235 i32)
+ (local $$236 i32)
+ (local $$237 i32)
+ (local $$238 i32)
+ (local $$239 i32)
+ (local $$240 i32)
+ (local $$241 i32)
+ (local $$242 i32)
+ (local $$243 i32)
+ (local $$244 i32)
+ (local $$245 i32)
+ (local $$246 i32)
+ (local $$247 i32)
+ (local $$248 i32)
+ (local $$249 i32)
+ (local $$250 i32)
+ (local $$251 i32)
+ (local $$252 i32)
+ (local $$253 i32)
+ (local $$254 i32)
+ (local $$255 i32)
+ (local $$256 i32)
+ (local $$257 i32)
+ (local $$258 i32)
+ (local $$259 i32)
+ (local $$260 i32)
+ (local $$261 i32)
+ (local $$262 i32)
+ (local $$263 i32)
+ (local $$264 i32)
+ (local $$265 i32)
+ (local $$266 i32)
+ (local $$267 i32)
+ (local $$268 i32)
+ (local $$269 i32)
+ (local $$270 i32)
+ (local $$271 i32)
+ (local $$272 i32)
+ (local $$273 i32)
+ (local $$274 i32)
+ (local $$275 i32)
+ (local $$276 i32)
+ (local $$277 i32)
+ (local $$278 i32)
+ (local $$279 i32)
+ (local $$280 i32)
+ (local $$281 i32)
+ (local $$282 i32)
+ (local $$283 i32)
+ (local $$284 i32)
+ (local $$285 i32)
+ (local $$286 i32)
+ (local $$287 i32)
+ (local $$288 i32)
+ (local $$289 i32)
+ (local $$290 i32)
+ (local $$291 i32)
+ (local $$292 i32)
+ (local $$293 i32)
+ (local $$294 i32)
+ (local $$295 i32)
+ (local $$296 i32)
+ (local $$297 i32)
+ (local $$298 i32)
+ (local $$299 i32)
+ (local $$300 i32)
+ (local $$301 i32)
+ (local $$302 i32)
+ (local $$303 i32)
+ (local $$304 i32)
+ (local $$305 i32)
+ (local $$306 i32)
+ (local $$307 i32)
+ (local $$308 i32)
+ (local $$309 i32)
+ (local $$310 i32)
+ (local $$311 i32)
+ (local $$312 i32)
+ (block $fake_return_waka123
+ (block
+ (set_local $$181
+ (i32.const 0)
+ )
+ (set_local $$181
+ (i32.load align=4
+ (get_local $$181)
+ )
+ )
+ (set_local $$182
+ (i32.const 1024)
+ )
+ (set_local $$279
+ (i32.sub
+ (get_local $$181)
+ (get_local $$182)
+ )
+ )
+ (set_local $$182
+ (i32.const 0)
+ )
+ (set_local $$279
+ (i32.store align=4
+ (get_local $$182)
+ (get_local $$279)
+ )
+ )
+ (set_local $$184
+ (i32.const 480)
+ )
+ (set_local $$184
+ (i32.add
+ (get_local $$279)
+ (get_local $$184)
+ )
+ )
+ (call_import $__lshrti3
+ (i64.sub
+ (i64.const 896)
+ (get_local $$17)
+ )
+ (get_local $$2)
+ (get_local $$1)
+ (get_local $$184)
+ )
+ (set_local $$33
+ (i64.add
+ (get_local $$17)
+ (i64.const -768)
+ )
+ )
+ (set_local $$185
+ (i32.const 464)
+ )
+ (set_local $$185
+ (i32.add
+ (get_local $$279)
+ (get_local $$185)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$33)
+ (get_local $$4)
+ (get_local $$3)
+ (get_local $$185)
+ )
+ (set_local $$186
+ (i32.const 496)
+ )
+ (set_local $$186
+ (i32.add
+ (get_local $$279)
+ (get_local $$186)
+ )
+ )
+ (call_import $__ashlti3
+ (i64.add
+ (get_local $$17)
+ (i64.const -896)
+ )
+ (get_local $$2)
+ (get_local $$1)
+ (get_local $$186)
+ )
+ (set_local $$34
+ (i64.sub
+ (i64.const 640)
+ (get_local $$17)
+ )
+ )
+ (set_local $$187
+ (i32.const 352)
+ )
+ (set_local $$187
+ (i32.add
+ (get_local $$279)
+ (get_local $$187)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$34)
+ (get_local $$6)
+ (get_local $$5)
+ (get_local $$187)
+ )
+ (set_local $$35
+ (i64.add
+ (get_local $$17)
+ (i64.const -512)
+ )
+ )
+ (set_local $$188
+ (i32.const 336)
+ )
+ (set_local $$188
+ (i32.add
+ (get_local $$279)
+ (get_local $$188)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$35)
+ (get_local $$8)
+ (get_local $$7)
+ (get_local $$188)
+ )
+ (set_local $$36
+ (i64.add
+ (get_local $$17)
+ (i64.const -640)
+ )
+ )
+ (set_local $$189
+ (i32.const 368)
+ )
+ (set_local $$189
+ (i32.add
+ (get_local $$279)
+ (get_local $$189)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$36)
+ (get_local $$6)
+ (get_local $$5)
+ (get_local $$189)
+ )
+ (set_local $$37
+ (i64.sub
+ (i64.const 768)
+ (get_local $$17)
+ )
+ )
+ (set_local $$190
+ (i32.const 432)
+ )
+ (set_local $$190
+ (i32.add
+ (get_local $$279)
+ (get_local $$190)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$37)
+ (get_local $$4)
+ (get_local $$3)
+ (get_local $$190)
+ )
+ (set_local $$38
+ (i64.const 384)
+ )
+ (set_local $$39
+ (i64.sub
+ (get_local $$38)
+ (get_local $$17)
+ )
+ )
+ (set_local $$191
+ (i32.const 864)
+ )
+ (set_local $$191
+ (i32.add
+ (get_local $$279)
+ (get_local $$191)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$39)
+ (get_local $$10)
+ (get_local $$9)
+ (get_local $$191)
+ )
+ (set_local $$40
+ (i64.add
+ (get_local $$17)
+ (i64.const -256)
+ )
+ )
+ (set_local $$192
+ (i32.const 848)
+ )
+ (set_local $$192
+ (i32.add
+ (get_local $$279)
+ (get_local $$192)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$40)
+ (get_local $$12)
+ (get_local $$11)
+ (get_local $$192)
+ )
+ (set_local $$41
+ (i64.add
+ (get_local $$17)
+ (i64.const -384)
+ )
+ )
+ (set_local $$193
+ (i32.const 880)
+ )
+ (set_local $$193
+ (i32.add
+ (get_local $$279)
+ (get_local $$193)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$41)
+ (get_local $$10)
+ (get_local $$9)
+ (get_local $$193)
+ )
+ (set_local $$194
+ (i32.const 1008)
+ )
+ (set_local $$194
+ (i32.add
+ (get_local $$279)
+ (get_local $$194)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$17)
+ (get_local $$16)
+ (get_local $$15)
+ (get_local $$194)
+ )
+ (set_local $$42
+ (i64.const 128)
+ )
+ (set_local $$51
+ (i64.sub
+ (get_local $$42)
+ (get_local $$17)
+ )
+ )
+ (set_local $$195
+ (i32.const 960)
+ )
+ (set_local $$195
+ (i32.add
+ (get_local $$279)
+ (get_local $$195)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$51)
+ (get_local $$14)
+ (get_local $$13)
+ (get_local $$195)
+ )
+ (set_local $$43
+ (i64.add
+ (get_local $$17)
+ (i64.const -128)
+ )
+ )
+ (set_local $$196
+ (i32.const 976)
+ )
+ (set_local $$196
+ (i32.add
+ (get_local $$279)
+ (get_local $$196)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$43)
+ (get_local $$14)
+ (get_local $$13)
+ (get_local $$196)
+ )
+ (set_local $$44
+ (i64.const 256)
+ )
+ (set_local $$45
+ (i64.sub
+ (get_local $$44)
+ (get_local $$17)
+ )
+ )
+ (set_local $$197
+ (i32.const 816)
+ )
+ (set_local $$197
+ (i32.add
+ (get_local $$279)
+ (get_local $$197)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$45)
+ (get_local $$12)
+ (get_local $$11)
+ (get_local $$197)
+ )
+ (set_local $$46
+ (i64.const 512)
+ )
+ (set_local $$47
+ (i64.sub
+ (get_local $$46)
+ (get_local $$17)
+ )
+ )
+ (set_local $$198
+ (i32.const 240)
+ )
+ (set_local $$198
+ (i32.add
+ (get_local $$279)
+ (get_local $$198)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$47)
+ (get_local $$8)
+ (get_local $$7)
+ (get_local $$198)
+ )
+ (set_local $$199
+ (i32.const 912)
+ )
+ (set_local $$199
+ (i32.add
+ (get_local $$279)
+ (get_local $$199)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$17)
+ (get_local $$12)
+ (get_local $$11)
+ (get_local $$199)
+ )
+ (set_local $$200
+ (i32.const 928)
+ )
+ (set_local $$200
+ (i32.add
+ (get_local $$279)
+ (get_local $$200)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$51)
+ (get_local $$10)
+ (get_local $$9)
+ (get_local $$200)
+ )
+ (set_local $$201
+ (i32.const 944)
+ )
+ (set_local $$201
+ (i32.add
+ (get_local $$279)
+ (get_local $$201)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$43)
+ (get_local $$10)
+ (get_local $$9)
+ (get_local $$201)
+ )
+ (set_local $$48
+ (i64.sub
+ (get_local $$44)
+ (get_local $$47)
+ )
+ )
+ (set_local $$202
+ (i32.const 80)
+ )
+ (set_local $$202
+ (i32.add
+ (get_local $$279)
+ (get_local $$202)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$48)
+ (get_local $$8)
+ (get_local $$7)
+ (get_local $$202)
+ )
+ (set_local $$203
+ (i32.const 96)
+ )
+ (set_local $$203
+ (i32.add
+ (get_local $$279)
+ (get_local $$203)
+ )
+ )
+ (call_import $__lshrti3
+ (i64.sub
+ (get_local $$42)
+ (get_local $$48)
+ )
+ (get_local $$6)
+ (get_local $$5)
+ (get_local $$203)
+ )
+ (set_local $$49
+ (i64.sub
+ (get_local $$42)
+ (get_local $$47)
+ )
+ )
+ (set_local $$204
+ (i32.const 112)
+ )
+ (set_local $$204
+ (i32.add
+ (get_local $$279)
+ (get_local $$204)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$49)
+ (get_local $$6)
+ (get_local $$5)
+ (get_local $$204)
+ )
+ (set_local $$205
+ (i32.const 48)
+ )
+ (set_local $$205
+ (i32.add
+ (get_local $$279)
+ (get_local $$205)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$47)
+ (get_local $$4)
+ (get_local $$3)
+ (get_local $$205)
+ )
+ (set_local $$206
+ (i32.const 176)
+ )
+ (set_local $$206
+ (i32.add
+ (get_local $$279)
+ (get_local $$206)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$45)
+ (get_local $$8)
+ (get_local $$7)
+ (get_local $$206)
+ )
+ (set_local $$207
+ (i32.const 288)
+ )
+ (set_local $$207
+ (i32.add
+ (get_local $$279)
+ (get_local $$207)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$34)
+ (get_local $$2)
+ (get_local $$1)
+ (get_local $$207)
+ )
+ (set_local $$208
+ (i32.const 272)
+ )
+ (set_local $$208
+ (i32.add
+ (get_local $$279)
+ (get_local $$208)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$35)
+ (get_local $$4)
+ (get_local $$3)
+ (get_local $$208)
+ )
+ (set_local $$209
+ (i32.const 304)
+ )
+ (set_local $$209
+ (i32.add
+ (get_local $$279)
+ (get_local $$209)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$36)
+ (get_local $$2)
+ (get_local $$1)
+ (get_local $$209)
+ )
+ (set_local $$210
+ (i32.const 128)
+ )
+ (set_local $$210
+ (i32.add
+ (get_local $$279)
+ (get_local $$210)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$45)
+ (get_local $$6)
+ (get_local $$5)
+ (get_local $$210)
+ )
+ (set_local $$211
+ (i32.const 144)
+ )
+ (set_local $$211
+ (i32.add
+ (get_local $$279)
+ (get_local $$211)
+ )
+ )
+ (call_import $__ashlti3
+ (i64.sub
+ (get_local $$38)
+ (get_local $$47)
+ )
+ (get_local $$8)
+ (get_local $$7)
+ (get_local $$211)
+ )
+ (set_local $$212
+ (i32.const 160)
+ )
+ (set_local $$212
+ (i32.add
+ (get_local $$279)
+ (get_local $$212)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$51)
+ (get_local $$8)
+ (get_local $$7)
+ (get_local $$212)
+ )
+ (set_local $$213
+ (i32.const 0)
+ )
+ (set_local $$213
+ (i32.add
+ (get_local $$279)
+ (get_local $$213)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$47)
+ (get_local $$2)
+ (get_local $$1)
+ (get_local $$213)
+ )
+ (set_local $$214
+ (i32.const 16)
+ )
+ (set_local $$214
+ (i32.add
+ (get_local $$279)
+ (get_local $$214)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$49)
+ (get_local $$4)
+ (get_local $$3)
+ (get_local $$214)
+ )
+ (set_local $$215
+ (i32.const 32)
+ )
+ (set_local $$215
+ (i32.add
+ (get_local $$279)
+ (get_local $$215)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$39)
+ (get_local $$4)
+ (get_local $$3)
+ (get_local $$215)
+ )
+ (set_local $$216
+ (i32.const 64)
+ )
+ (set_local $$216
+ (i32.add
+ (get_local $$279)
+ (get_local $$216)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$48)
+ (get_local $$6)
+ (get_local $$5)
+ (get_local $$216)
+ )
+ (set_local $$217
+ (i32.const 896)
+ )
+ (set_local $$217
+ (i32.add
+ (get_local $$279)
+ (get_local $$217)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$17)
+ (get_local $$10)
+ (get_local $$9)
+ (get_local $$217)
+ )
+ (set_local $$218
+ (i32.const 256)
+ )
+ (set_local $$218
+ (i32.add
+ (get_local $$279)
+ (get_local $$218)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$35)
+ (get_local $$2)
+ (get_local $$1)
+ (get_local $$218)
+ )
+ (set_local $$219
+ (i32.const 192)
+ )
+ (set_local $$219
+ (i32.add
+ (get_local $$279)
+ (get_local $$219)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$47)
+ (get_local $$6)
+ (get_local $$5)
+ (get_local $$219)
+ )
+ (set_local $$220
+ (i32.const 208)
+ )
+ (set_local $$220
+ (i32.add
+ (get_local $$279)
+ (get_local $$220)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$49)
+ (get_local $$8)
+ (get_local $$7)
+ (get_local $$220)
+ )
+ (set_local $$221
+ (i32.const 224)
+ )
+ (set_local $$221
+ (i32.add
+ (get_local $$279)
+ (get_local $$221)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$39)
+ (get_local $$8)
+ (get_local $$7)
+ (get_local $$221)
+ )
+ (set_local $$222
+ (i32.const 768)
+ )
+ (set_local $$222
+ (i32.add
+ (get_local $$279)
+ (get_local $$222)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$45)
+ (get_local $$10)
+ (get_local $$9)
+ (get_local $$222)
+ )
+ (set_local $$49
+ (i64.sub
+ (get_local $$42)
+ (get_local $$45)
+ )
+ )
+ (set_local $$223
+ (i32.const 784)
+ )
+ (set_local $$223
+ (i32.add
+ (get_local $$279)
+ (get_local $$223)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$49)
+ (get_local $$12)
+ (get_local $$11)
+ (get_local $$223)
+ )
+ (set_local $$224
+ (i32.const 800)
+ )
+ (set_local $$224
+ (i32.add
+ (get_local $$279)
+ (get_local $$224)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$51)
+ (get_local $$12)
+ (get_local $$11)
+ (get_local $$224)
+ )
+ (set_local $$225
+ (i32.const 992)
+ )
+ (set_local $$225
+ (i32.add
+ (get_local $$279)
+ (get_local $$225)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$17)
+ (get_local $$14)
+ (get_local $$13)
+ (get_local $$225)
+ )
+ (set_local $$226
+ (i32.const 832)
+ )
+ (set_local $$226
+ (i32.add
+ (get_local $$279)
+ (get_local $$226)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$40)
+ (get_local $$10)
+ (get_local $$9)
+ (get_local $$226)
+ )
+ (set_local $$227
+ (i32.const 384)
+ )
+ (set_local $$227
+ (i32.add
+ (get_local $$279)
+ (get_local $$227)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$37)
+ (get_local $$2)
+ (get_local $$1)
+ (get_local $$227)
+ )
+ (set_local $$228
+ (i32.const 400)
+ )
+ (set_local $$228
+ (i32.add
+ (get_local $$279)
+ (get_local $$228)
+ )
+ )
+ (call_import $__ashlti3
+ (i64.sub
+ (get_local $$42)
+ (get_local $$37)
+ )
+ (get_local $$4)
+ (get_local $$3)
+ (get_local $$228)
+ )
+ (set_local $$229
+ (i32.const 416)
+ )
+ (set_local $$229
+ (i32.add
+ (get_local $$279)
+ (get_local $$229)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$34)
+ (get_local $$4)
+ (get_local $$3)
+ (get_local $$229)
+ )
+ (set_local $$230
+ (i32.const 320)
+ )
+ (set_local $$230
+ (i32.add
+ (get_local $$279)
+ (get_local $$230)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$35)
+ (get_local $$6)
+ (get_local $$5)
+ (get_local $$230)
+ )
+ (set_local $$231
+ (i32.const 448)
+ )
+ (set_local $$231
+ (i32.add
+ (get_local $$279)
+ (get_local $$231)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$33)
+ (get_local $$2)
+ (get_local $$1)
+ (get_local $$231)
+ )
+ (set_local $$232
+ (i32.const 736)
+ )
+ (set_local $$232
+ (i32.add
+ (get_local $$279)
+ (get_local $$232)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$39)
+ (get_local $$2)
+ (get_local $$1)
+ (get_local $$232)
+ )
+ (set_local $$233
+ (i32.const 720)
+ )
+ (set_local $$233
+ (i32.add
+ (get_local $$279)
+ (get_local $$233)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$40)
+ (get_local $$4)
+ (get_local $$3)
+ (get_local $$233)
+ )
+ (set_local $$234
+ (i32.const 752)
+ )
+ (set_local $$234
+ (i32.add
+ (get_local $$279)
+ (get_local $$234)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$41)
+ (get_local $$2)
+ (get_local $$1)
+ (get_local $$234)
+ )
+ (set_local $$235
+ (i32.const 592)
+ )
+ (set_local $$235
+ (i32.add
+ (get_local $$279)
+ (get_local $$235)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$17)
+ (get_local $$8)
+ (get_local $$7)
+ (get_local $$235)
+ )
+ (set_local $$236
+ (i32.const 608)
+ )
+ (set_local $$236
+ (i32.add
+ (get_local $$279)
+ (get_local $$236)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$51)
+ (get_local $$6)
+ (get_local $$5)
+ (get_local $$236)
+ )
+ (set_local $$237
+ (i32.const 624)
+ )
+ (set_local $$237
+ (i32.add
+ (get_local $$279)
+ (get_local $$237)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$43)
+ (get_local $$6)
+ (get_local $$5)
+ (get_local $$237)
+ )
+ (set_local $$238
+ (i32.const 688)
+ )
+ (set_local $$238
+ (i32.add
+ (get_local $$279)
+ (get_local $$238)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$45)
+ (get_local $$4)
+ (get_local $$3)
+ (get_local $$238)
+ )
+ (set_local $$239
+ (i32.const 640)
+ )
+ (set_local $$239
+ (i32.add
+ (get_local $$279)
+ (get_local $$239)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$45)
+ (get_local $$2)
+ (get_local $$1)
+ (get_local $$239)
+ )
+ (set_local $$240
+ (i32.const 656)
+ )
+ (set_local $$240
+ (i32.add
+ (get_local $$279)
+ (get_local $$240)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$49)
+ (get_local $$4)
+ (get_local $$3)
+ (get_local $$240)
+ )
+ (set_local $$241
+ (i32.const 672)
+ )
+ (set_local $$241
+ (i32.add
+ (get_local $$279)
+ (get_local $$241)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$51)
+ (get_local $$4)
+ (get_local $$3)
+ (get_local $$241)
+ )
+ (set_local $$242
+ (i32.const 576)
+ )
+ (set_local $$242
+ (i32.add
+ (get_local $$279)
+ (get_local $$242)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$17)
+ (get_local $$6)
+ (get_local $$5)
+ (get_local $$242)
+ )
+ (set_local $$243
+ (i32.const 704)
+ )
+ (set_local $$243
+ (i32.add
+ (get_local $$279)
+ (get_local $$243)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$40)
+ (get_local $$2)
+ (get_local $$1)
+ (get_local $$243)
+ )
+ (set_local $$244
+ (i32.const 528)
+ )
+ (set_local $$244
+ (i32.add
+ (get_local $$279)
+ (get_local $$244)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$17)
+ (get_local $$4)
+ (get_local $$3)
+ (get_local $$244)
+ )
+ (set_local $$245
+ (i32.const 544)
+ )
+ (set_local $$245
+ (i32.add
+ (get_local $$279)
+ (get_local $$245)
+ )
+ )
+ (call_import $__lshrti3
+ (get_local $$51)
+ (get_local $$2)
+ (get_local $$1)
+ (get_local $$245)
+ )
+ (set_local $$246
+ (i32.const 560)
+ )
+ (set_local $$246
+ (i32.add
+ (get_local $$279)
+ (get_local $$246)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$43)
+ (get_local $$2)
+ (get_local $$1)
+ (get_local $$246)
+ )
+ (set_local $$247
+ (i32.const 512)
+ )
+ (set_local $$247
+ (i32.add
+ (get_local $$279)
+ (get_local $$247)
+ )
+ )
+ (call_import $__ashlti3
+ (get_local $$17)
+ (get_local $$2)
+ (get_local $$1)
+ (get_local $$247)
+ )
+ (set_local $$39
+ (i64.load align=8 offset=480
+ (get_local $$279)
+ )
+ )
+ (set_local $$43
+ (i64.load align=8 offset=464
+ (get_local $$279)
+ )
+ )
+ (set_local $$34
+ (i64.load align=8 offset=496
+ (get_local $$279)
+ )
+ )
+ (set_local $$51
+ (i64.const 0)
+ )
+ (set_local $$49
+ (i64.load align=8 offset=352
+ (get_local $$279)
+ )
+ )
+ (set_local $$36
+ (i64.load align=8 offset=336
+ (get_local $$279)
+ )
+ )
+ (set_local $$38
+ (i64.load align=8 offset=368
+ (get_local $$279)
+ )
+ )
+ (set_local $$41
+ (i64.load align=8 offset=432
+ (get_local $$279)
+ )
+ )
+ (set_local $$58
+ (i64.load align=8 offset=864
+ (get_local $$279)
+ )
+ )
+ (set_local $$59
+ (i64.load align=8 offset=848
+ (get_local $$279)
+ )
+ )
+ (set_local $$60
+ (i64.load align=8 offset=880
+ (get_local $$279)
+ )
+ )
+ (set_local $$63
+ (i64.load align=8 offset=1008
+ (get_local $$279)
+ )
+ )
+ (set_local $$64
+ (i64.load align=8 offset=960
+ (get_local $$279)
+ )
+ )
+ (set_local $$65
+ (i64.load align=8 offset=976
+ (get_local $$279)
+ )
+ )
+ (set_local $$68
+ (i64.load align=8 offset=816
+ (get_local $$279)
+ )
+ )
+ (set_local $$71
+ (i64.load align=8 offset=240
+ (get_local $$279)
+ )
+ )
+ (set_local $$50
+ (i64.lt_u
+ (get_local $$33)
+ (get_local $$42)
+ )
+ )
+ (set_local $$52
+ (i64.eq
+ (get_local $$33)
+ (get_local $$51)
+ )
+ )
+ (set_local $$53
+ (i64.lt_u
+ (get_local $$35)
+ (get_local $$42)
+ )
+ )
+ (set_local $$54
+ (i64.eq
+ (get_local $$35)
+ (get_local $$51)
+ )
+ )
+ (set_local $$55
+ (i64.lt_u
+ (get_local $$37)
+ (get_local $$42)
+ )
+ )
+ (set_local $$56
+ (i64.lt_u
+ (get_local $$35)
+ (get_local $$44)
+ )
+ )
+ (set_local $$57
+ (i64.lt_u
+ (get_local $$40)
+ (get_local $$42)
+ )
+ )
+ (set_local $$61
+ (i64.eq
+ (get_local $$40)
+ (get_local $$51)
+ )
+ )
+ (set_local $$62
+ (i64.lt_u
+ (get_local $$17)
+ (get_local $$42)
+ )
+ )
+ (set_local $$66
+ (i64.eq
+ (get_local $$17)
+ (get_local $$51)
+ )
+ )
+ (set_local $$67
+ (i64.lt_u
+ (get_local $$45)
+ (get_local $$42)
+ )
+ )
+ (set_local $$69
+ (i64.lt_u
+ (get_local $$17)
+ (get_local $$44)
+ )
+ )
+ (set_local $$70
+ (i64.lt_u
+ (get_local $$47)
+ (get_local $$42)
+ )
+ )
+ (set_local $$72
+ (i64.lt_u
+ (get_local $$47)
+ (get_local $$44)
+ )
+ )
+ (set_local $$73
+ (i64.lt_u
+ (get_local $$17)
+ (get_local $$46)
+ )
+ )
+ (set_local $$74
+ (i32.const 8)
+ )
+ (set_local $$248
+ (i32.const 480)
+ )
+ (set_local $$248
+ (i32.add
+ (get_local $$279)
+ (get_local $$248)
+ )
+ )
+ (set_local $$17
+ (i64.load align=8
+ (i32.add
+ (get_local $$248)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$249
+ (i32.const 464)
+ )
+ (set_local $$249
+ (i32.add
+ (get_local $$279)
+ (get_local $$249)
+ )
+ )
+ (set_local $$35
+ (i64.load align=8
+ (i32.add
+ (get_local $$249)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$250
+ (i32.const 496)
+ )
+ (set_local $$250
+ (i32.add
+ (get_local $$279)
+ (get_local $$250)
+ )
+ )
+ (set_local $$40
+ (i64.load align=8
+ (i32.add
+ (get_local $$250)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$251
+ (i32.const 352)
+ )
+ (set_local $$251
+ (i32.add
+ (get_local $$279)
+ (get_local $$251)
+ )
+ )
+ (set_local $$44
+ (i64.load align=8
+ (i32.add
+ (get_local $$251)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$252
+ (i32.const 336)
+ )
+ (set_local $$252
+ (i32.add
+ (get_local $$279)
+ (get_local $$252)
+ )
+ )
+ (set_local $$33
+ (i64.load align=8
+ (i32.add
+ (get_local $$252)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$253
+ (i32.const 368)
+ )
+ (set_local $$253
+ (i32.add
+ (get_local $$279)
+ (get_local $$253)
+ )
+ )
+ (set_local $$46
+ (i64.load align=8
+ (i32.add
+ (get_local $$253)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$254
+ (i32.const 432)
+ )
+ (set_local $$254
+ (i32.add
+ (get_local $$279)
+ (get_local $$254)
+ )
+ )
+ (set_local $$75
+ (i64.load align=8
+ (i32.add
+ (get_local $$254)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$255
+ (i32.const 864)
+ )
+ (set_local $$255
+ (i32.add
+ (get_local $$279)
+ (get_local $$255)
+ )
+ )
+ (set_local $$76
+ (i64.load align=8
+ (i32.add
+ (get_local $$255)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$256
+ (i32.const 848)
+ )
+ (set_local $$256
+ (i32.add
+ (get_local $$279)
+ (get_local $$256)
+ )
+ )
+ (set_local $$77
+ (i64.load align=8
+ (i32.add
+ (get_local $$256)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$257
+ (i32.const 880)
+ )
+ (set_local $$257
+ (i32.add
+ (get_local $$279)
+ (get_local $$257)
+ )
+ )
+ (set_local $$78
+ (i64.load align=8
+ (i32.add
+ (get_local $$257)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$258
+ (i32.const 1008)
+ )
+ (set_local $$258
+ (i32.add
+ (get_local $$279)
+ (get_local $$258)
+ )
+ )
+ (set_local $$79
+ (i64.load align=8
+ (i32.add
+ (get_local $$258)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$259
+ (i32.const 960)
+ )
+ (set_local $$259
+ (i32.add
+ (get_local $$279)
+ (get_local $$259)
+ )
+ )
+ (set_local $$80
+ (i64.load align=8
+ (i32.add
+ (get_local $$259)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$260
+ (i32.const 976)
+ )
+ (set_local $$260
+ (i32.add
+ (get_local $$279)
+ (get_local $$260)
+ )
+ )
+ (set_local $$81
+ (i64.load align=8
+ (i32.add
+ (get_local $$260)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$261
+ (i32.const 816)
+ )
+ (set_local $$261
+ (i32.add
+ (get_local $$279)
+ (get_local $$261)
+ )
+ )
+ (set_local $$82
+ (i64.load align=8
+ (i32.add
+ (get_local $$261)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$262
+ (i32.const 240)
+ )
+ (set_local $$262
+ (i32.add
+ (get_local $$279)
+ (get_local $$262)
+ )
+ )
+ (set_local $$83
+ (i64.load align=8
+ (i32.add
+ (get_local $$262)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$84
+ (i64.load align=8 offset=912
+ (get_local $$279)
+ )
+ )
+ (set_local $$85
+ (i64.load align=8 offset=928
+ (get_local $$279)
+ )
+ )
+ (set_local $$86
+ (i64.load align=8 offset=944
+ (get_local $$279)
+ )
+ )
+ (set_local $$88
+ (i64.load align=8 offset=80
+ (get_local $$279)
+ )
+ )
+ (set_local $$89
+ (i64.load align=8 offset=96
+ (get_local $$279)
+ )
+ )
+ (set_local $$90
+ (i64.load align=8 offset=112
+ (get_local $$279)
+ )
+ )
+ (set_local $$92
+ (i64.load align=8 offset=48
+ (get_local $$279)
+ )
+ )
+ (set_local $$93
+ (i64.load align=8 offset=176
+ (get_local $$279)
+ )
+ )
+ (set_local $$95
+ (i64.load align=8 offset=288
+ (get_local $$279)
+ )
+ )
+ (set_local $$96
+ (i64.load align=8 offset=272
+ (get_local $$279)
+ )
+ )
+ (set_local $$87
+ (i64.lt_u
+ (get_local $$48)
+ (get_local $$42)
+ )
+ )
+ (set_local $$91
+ (i64.eq
+ (get_local $$48)
+ (get_local $$51)
+ )
+ )
+ (set_local $$94
+ (i64.eq
+ (get_local $$47)
+ (get_local $$51)
+ )
+ )
+ (set_local $$42
+ (i64.load align=8 offset=304
+ (get_local $$279)
+ )
+ )
+ (set_local $$263
+ (i32.const 912)
+ )
+ (set_local $$263
+ (i32.add
+ (get_local $$279)
+ (get_local $$263)
+ )
+ )
+ (set_local $$47
+ (i64.load align=8
+ (i32.add
+ (get_local $$263)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$264
+ (i32.const 928)
+ )
+ (set_local $$264
+ (i32.add
+ (get_local $$279)
+ (get_local $$264)
+ )
+ )
+ (set_local $$48
+ (i64.load align=8
+ (i32.add
+ (get_local $$264)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$265
+ (i32.const 944)
+ )
+ (set_local $$265
+ (i32.add
+ (get_local $$279)
+ (get_local $$265)
+ )
+ )
+ (set_local $$97
+ (i64.load align=8
+ (i32.add
+ (get_local $$265)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$266
+ (i32.const 80)
+ )
+ (set_local $$266
+ (i32.add
+ (get_local $$279)
+ (get_local $$266)
+ )
+ )
+ (set_local $$98
+ (i64.load align=8
+ (i32.add
+ (get_local $$266)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$267
+ (i32.const 96)
+ )
+ (set_local $$267
+ (i32.add
+ (get_local $$279)
+ (get_local $$267)
+ )
+ )
+ (set_local $$99
+ (i64.load align=8
+ (i32.add
+ (get_local $$267)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$268
+ (i32.const 112)
+ )
+ (set_local $$268
+ (i32.add
+ (get_local $$279)
+ (get_local $$268)
+ )
+ )
+ (set_local $$100
+ (i64.load align=8
+ (i32.add
+ (get_local $$268)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$269
+ (i32.const 48)
+ )
+ (set_local $$269
+ (i32.add
+ (get_local $$279)
+ (get_local $$269)
+ )
+ )
+ (set_local $$101
+ (i64.load align=8
+ (i32.add
+ (get_local $$269)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$270
+ (i32.const 176)
+ )
+ (set_local $$270
+ (i32.add
+ (get_local $$279)
+ (get_local $$270)
+ )
+ )
+ (set_local $$102
+ (i64.load align=8
+ (i32.add
+ (get_local $$270)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$271
+ (i32.const 288)
+ )
+ (set_local $$271
+ (i32.add
+ (get_local $$279)
+ (get_local $$271)
+ )
+ )
+ (set_local $$103
+ (i64.load align=8
+ (i32.add
+ (get_local $$271)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$272
+ (i32.const 272)
+ )
+ (set_local $$272
+ (i32.add
+ (get_local $$279)
+ (get_local $$272)
+ )
+ )
+ (set_local $$104
+ (i64.load align=8
+ (i32.add
+ (get_local $$272)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$273
+ (i32.const 304)
+ )
+ (set_local $$273
+ (i32.add
+ (get_local $$279)
+ (get_local $$273)
+ )
+ )
+ (set_local $$105
+ (i64.load align=8
+ (i32.add
+ (get_local $$273)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$106
+ (i64.load align=8 offset=128
+ (get_local $$279)
+ )
+ )
+ (set_local $$107
+ (i64.load align=8 offset=144
+ (get_local $$279)
+ )
+ )
+ (set_local $$108
+ (i64.load align=8 offset=160
+ (get_local $$279)
+ )
+ )
+ (set_local $$110
+ (i64.load align=8
+ (get_local $$279)
+ )
+ )
+ (set_local $$111
+ (i64.load align=8 offset=16
+ (get_local $$279)
+ )
+ )
+ (set_local $$112
+ (i64.load align=8 offset=32
+ (get_local $$279)
+ )
+ )
+ (set_local $$113
+ (i64.load align=8 offset=64
+ (get_local $$279)
+ )
+ )
+ (set_local $$114
+ (i64.load align=8 offset=896
+ (get_local $$279)
+ )
+ )
+ (set_local $$109
+ (i64.eq
+ (get_local $$45)
+ (get_local $$51)
+ )
+ )
+ (set_local $$45
+ (i64.load align=8 offset=256
+ (get_local $$279)
+ )
+ )
+ (set_local $$274
+ (i32.const 128)
+ )
+ (set_local $$274
+ (i32.add
+ (get_local $$279)
+ (get_local $$274)
+ )
+ )
+ (set_local $$115
+ (i64.load align=8
+ (i32.add
+ (get_local $$274)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$275
+ (i32.const 144)
+ )
+ (set_local $$275
+ (i32.add
+ (get_local $$279)
+ (get_local $$275)
+ )
+ )
+ (set_local $$116
+ (i64.load align=8
+ (i32.add
+ (get_local $$275)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$276
+ (i32.const 160)
+ )
+ (set_local $$276
+ (i32.add
+ (get_local $$279)
+ (get_local $$276)
+ )
+ )
+ (set_local $$117
+ (i64.load align=8
+ (i32.add
+ (get_local $$276)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$277
+ (i32.const 0)
+ )
+ (set_local $$277
+ (i32.add
+ (get_local $$279)
+ (get_local $$277)
+ )
+ )
+ (set_local $$118
+ (i64.load align=8
+ (i32.add
+ (get_local $$277)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$278
+ (i32.const 16)
+ )
+ (set_local $$278
+ (i32.add
+ (get_local $$279)
+ (get_local $$278)
+ )
+ )
+ (set_local $$119
+ (i64.load align=8
+ (i32.add
+ (get_local $$278)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$279
+ (i32.const 32)
+ )
+ (set_local $$279
+ (i32.add
+ (get_local $$279)
+ (get_local $$279)
+ )
+ )
+ (set_local $$120
+ (i64.load align=8
+ (i32.add
+ (get_local $$279)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$280
+ (i32.const 64)
+ )
+ (set_local $$280
+ (i32.add
+ (get_local $$279)
+ (get_local $$280)
+ )
+ )
+ (set_local $$121
+ (i64.load align=8
+ (i32.add
+ (get_local $$280)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$281
+ (i32.const 896)
+ )
+ (set_local $$281
+ (i32.add
+ (get_local $$279)
+ (get_local $$281)
+ )
+ )
+ (set_local $$122
+ (i64.load align=8
+ (i32.add
+ (get_local $$281)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$282
+ (i32.const 256)
+ )
+ (set_local $$282
+ (i32.add
+ (get_local $$279)
+ (get_local $$282)
+ )
+ )
+ (set_local $$123
+ (i64.load align=8
+ (i32.add
+ (get_local $$282)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$124
+ (i64.load align=8 offset=192
+ (get_local $$279)
+ )
+ )
+ (set_local $$125
+ (i64.load align=8 offset=208
+ (get_local $$279)
+ )
+ )
+ (set_local $$126
+ (i64.load align=8 offset=224
+ (get_local $$279)
+ )
+ )
+ (set_local $$127
+ (i64.load align=8 offset=768
+ (get_local $$279)
+ )
+ )
+ (set_local $$128
+ (i64.load align=8 offset=784
+ (get_local $$279)
+ )
+ )
+ (set_local $$129
+ (i64.load align=8 offset=800
+ (get_local $$279)
+ )
+ )
+ (set_local $$130
+ (i64.load align=8 offset=992
+ (get_local $$279)
+ )
+ )
+ (set_local $$131
+ (i64.load align=8 offset=832
+ (get_local $$279)
+ )
+ )
+ (set_local $$132
+ (i64.load align=8 offset=384
+ (get_local $$279)
+ )
+ )
+ (set_local $$133
+ (i64.load align=8 offset=400
+ (get_local $$279)
+ )
+ )
+ (set_local $$134
+ (i64.load align=8 offset=416
+ (get_local $$279)
+ )
+ )
+ (set_local $$136
+ (i64.load align=8 offset=320
+ (get_local $$279)
+ )
+ )
+ (set_local $$135
+ (i64.eq
+ (get_local $$37)
+ (get_local $$51)
+ )
+ )
+ (set_local $$37
+ (i64.load align=8 offset=448
+ (get_local $$279)
+ )
+ )
+ (set_local $$283
+ (i32.const 192)
+ )
+ (set_local $$283
+ (i32.add
+ (get_local $$279)
+ (get_local $$283)
+ )
+ )
+ (set_local $$137
+ (i64.load align=8
+ (i32.add
+ (get_local $$283)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$284
+ (i32.const 208)
+ )
+ (set_local $$284
+ (i32.add
+ (get_local $$279)
+ (get_local $$284)
+ )
+ )
+ (set_local $$138
+ (i64.load align=8
+ (i32.add
+ (get_local $$284)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$285
+ (i32.const 224)
+ )
+ (set_local $$285
+ (i32.add
+ (get_local $$279)
+ (get_local $$285)
+ )
+ )
+ (set_local $$139
+ (i64.load align=8
+ (i32.add
+ (get_local $$285)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$286
+ (i32.const 768)
+ )
+ (set_local $$286
+ (i32.add
+ (get_local $$279)
+ (get_local $$286)
+ )
+ )
+ (set_local $$140
+ (i64.load align=8
+ (i32.add
+ (get_local $$286)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$287
+ (i32.const 784)
+ )
+ (set_local $$287
+ (i32.add
+ (get_local $$279)
+ (get_local $$287)
+ )
+ )
+ (set_local $$141
+ (i64.load align=8
+ (i32.add
+ (get_local $$287)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$288
+ (i32.const 800)
+ )
+ (set_local $$288
+ (i32.add
+ (get_local $$279)
+ (get_local $$288)
+ )
+ )
+ (set_local $$142
+ (i64.load align=8
+ (i32.add
+ (get_local $$288)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$289
+ (i32.const 992)
+ )
+ (set_local $$289
+ (i32.add
+ (get_local $$279)
+ (get_local $$289)
+ )
+ )
+ (set_local $$143
+ (i64.load align=8
+ (i32.add
+ (get_local $$289)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$290
+ (i32.const 832)
+ )
+ (set_local $$290
+ (i32.add
+ (get_local $$279)
+ (get_local $$290)
+ )
+ )
+ (set_local $$144
+ (i64.load align=8
+ (i32.add
+ (get_local $$290)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$291
+ (i32.const 384)
+ )
+ (set_local $$291
+ (i32.add
+ (get_local $$279)
+ (get_local $$291)
+ )
+ )
+ (set_local $$145
+ (i64.load align=8
+ (i32.add
+ (get_local $$291)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$292
+ (i32.const 400)
+ )
+ (set_local $$292
+ (i32.add
+ (get_local $$279)
+ (get_local $$292)
+ )
+ )
+ (set_local $$146
+ (i64.load align=8
+ (i32.add
+ (get_local $$292)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$293
+ (i32.const 416)
+ )
+ (set_local $$293
+ (i32.add
+ (get_local $$279)
+ (get_local $$293)
+ )
+ )
+ (set_local $$147
+ (i64.load align=8
+ (i32.add
+ (get_local $$293)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$294
+ (i32.const 320)
+ )
+ (set_local $$294
+ (i32.add
+ (get_local $$279)
+ (get_local $$294)
+ )
+ )
+ (set_local $$148
+ (i64.load align=8
+ (i32.add
+ (get_local $$294)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$295
+ (i32.const 448)
+ )
+ (set_local $$295
+ (i32.add
+ (get_local $$279)
+ (get_local $$295)
+ )
+ )
+ (set_local $$149
+ (i64.load align=8
+ (i32.add
+ (get_local $$295)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$150
+ (i64.load align=8 offset=736
+ (get_local $$279)
+ )
+ )
+ (set_local $$151
+ (i64.load align=8 offset=720
+ (get_local $$279)
+ )
+ )
+ (set_local $$152
+ (i64.load align=8 offset=752
+ (get_local $$279)
+ )
+ )
+ (set_local $$153
+ (i64.load align=8 offset=592
+ (get_local $$279)
+ )
+ )
+ (set_local $$154
+ (i64.load align=8 offset=608
+ (get_local $$279)
+ )
+ )
+ (set_local $$155
+ (i64.load align=8 offset=624
+ (get_local $$279)
+ )
+ )
+ (set_local $$156
+ (i64.load align=8 offset=688
+ (get_local $$279)
+ )
+ )
+ (set_local $$296
+ (i32.const 736)
+ )
+ (set_local $$296
+ (i32.add
+ (get_local $$279)
+ (get_local $$296)
+ )
+ )
+ (set_local $$157
+ (i64.load align=8
+ (i32.add
+ (get_local $$296)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$297
+ (i32.const 720)
+ )
+ (set_local $$297
+ (i32.add
+ (get_local $$279)
+ (get_local $$297)
+ )
+ )
+ (set_local $$158
+ (i64.load align=8
+ (i32.add
+ (get_local $$297)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$298
+ (i32.const 752)
+ )
+ (set_local $$298
+ (i32.add
+ (get_local $$279)
+ (get_local $$298)
+ )
+ )
+ (set_local $$159
+ (i64.load align=8
+ (i32.add
+ (get_local $$298)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$299
+ (i32.const 592)
+ )
+ (set_local $$299
+ (i32.add
+ (get_local $$279)
+ (get_local $$299)
+ )
+ )
+ (set_local $$160
+ (i64.load align=8
+ (i32.add
+ (get_local $$299)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$300
+ (i32.const 608)
+ )
+ (set_local $$300
+ (i32.add
+ (get_local $$279)
+ (get_local $$300)
+ )
+ )
+ (set_local $$161
+ (i64.load align=8
+ (i32.add
+ (get_local $$300)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$301
+ (i32.const 624)
+ )
+ (set_local $$301
+ (i32.add
+ (get_local $$279)
+ (get_local $$301)
+ )
+ )
+ (set_local $$162
+ (i64.load align=8
+ (i32.add
+ (get_local $$301)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$302
+ (i32.const 688)
+ )
+ (set_local $$302
+ (i32.add
+ (get_local $$279)
+ (get_local $$302)
+ )
+ )
+ (set_local $$163
+ (i64.load align=8
+ (i32.add
+ (get_local $$302)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$164
+ (i64.load align=8 offset=640
+ (get_local $$279)
+ )
+ )
+ (set_local $$165
+ (i64.load align=8 offset=656
+ (get_local $$279)
+ )
+ )
+ (set_local $$166
+ (i64.load align=8 offset=672
+ (get_local $$279)
+ )
+ )
+ (set_local $$167
+ (i64.load align=8 offset=576
+ (get_local $$279)
+ )
+ )
+ (set_local $$168
+ (i64.load align=8 offset=704
+ (get_local $$279)
+ )
+ )
+ (set_local $$303
+ (i32.const 640)
+ )
+ (set_local $$303
+ (i32.add
+ (get_local $$279)
+ (get_local $$303)
+ )
+ )
+ (set_local $$169
+ (i64.load align=8
+ (i32.add
+ (get_local $$303)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$304
+ (i32.const 656)
+ )
+ (set_local $$304
+ (i32.add
+ (get_local $$279)
+ (get_local $$304)
+ )
+ )
+ (set_local $$170
+ (i64.load align=8
+ (i32.add
+ (get_local $$304)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$305
+ (i32.const 672)
+ )
+ (set_local $$305
+ (i32.add
+ (get_local $$279)
+ (get_local $$305)
+ )
+ )
+ (set_local $$171
+ (i64.load align=8
+ (i32.add
+ (get_local $$305)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$306
+ (i32.const 576)
+ )
+ (set_local $$306
+ (i32.add
+ (get_local $$279)
+ (get_local $$306)
+ )
+ )
+ (set_local $$172
+ (i64.load align=8
+ (i32.add
+ (get_local $$306)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$307
+ (i32.const 704)
+ )
+ (set_local $$307
+ (i32.add
+ (get_local $$279)
+ (get_local $$307)
+ )
+ )
+ (set_local $$173
+ (i64.load align=8
+ (i32.add
+ (get_local $$307)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$174
+ (i64.load align=8 offset=528
+ (get_local $$279)
+ )
+ )
+ (set_local $$175
+ (i64.load align=8 offset=544
+ (get_local $$279)
+ )
+ )
+ (set_local $$176
+ (i64.load align=8 offset=560
+ (get_local $$279)
+ )
+ )
+ (set_local $$308
+ (i32.const 528)
+ )
+ (set_local $$308
+ (i32.add
+ (get_local $$279)
+ (get_local $$308)
+ )
+ )
+ (set_local $$177
+ (i64.load align=8
+ (i32.add
+ (get_local $$308)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$309
+ (i32.const 544)
+ )
+ (set_local $$309
+ (i32.add
+ (get_local $$279)
+ (get_local $$309)
+ )
+ )
+ (set_local $$178
+ (i64.load align=8
+ (i32.add
+ (get_local $$309)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$310
+ (i32.const 560)
+ )
+ (set_local $$310
+ (i32.add
+ (get_local $$279)
+ (get_local $$310)
+ )
+ )
+ (set_local $$179
+ (i64.load align=8
+ (i32.add
+ (get_local $$310)
+ (get_local $$74)
+ )
+ )
+ )
+ (set_local $$180
+ (i64.load align=8 offset=512
+ (get_local $$279)
+ )
+ )
+ (set_local $$311
+ (i32.const 512)
+ )
+ (set_local $$311
+ (i32.add
+ (get_local $$279)
+ (get_local $$311)
+ )
+ )
+ (i64.store align=8
+ (i32.add
+ (get_local $$0)
+ (get_local $$74)
+ )
+ (i64.select
+ (get_local $$73)
+ (i64.select
+ (get_local $$69)
+ (i64.select
+ (get_local $$62)
+ (i64.load align=8
+ (i32.add
+ (get_local $$311)
+ (get_local $$74)
+ )
+ )
+ (get_local $$51)
+ )
+ (get_local $$51)
+ )
+ (get_local $$51)
+ )
+ )
+ (i64.store align=8
+ (get_local $$0)
+ (i64.select
+ (get_local $$73)
+ (i64.select
+ (get_local $$69)
+ (i64.select
+ (get_local $$62)
+ (get_local $$180)
+ (get_local $$51)
+ )
+ (get_local $$51)
+ )
+ (get_local $$51)
+ )
+ )
+ (i64.store align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const 24)
+ )
+ (i64.select
+ (get_local $$73)
+ (i64.select
+ (get_local $$69)
+ (i64.select
+ (get_local $$66)
+ (get_local $$4)
+ (i64.select
+ (get_local $$62)
+ (i64.or
+ (get_local $$177)
+ (get_local $$178)
+ )
+ (get_local $$179)
+ )
+ )
+ (get_local $$51)
+ )
+ (get_local $$51)
+ )
+ )
+ (i64.store align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const 16)
+ )
+ (i64.select
+ (get_local $$73)
+ (i64.select
+ (get_local $$69)
+ (i64.select
+ (get_local $$66)
+ (get_local $$3)
+ (i64.select
+ (get_local $$62)
+ (i64.or
+ (get_local $$174)
+ (get_local $$175)
+ )
+ (get_local $$176)
+ )
+ )
+ (get_local $$51)
+ )
+ (get_local $$51)
+ )
+ )
+ (i64.store align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const 56)
+ )
+ (i64.select
+ (get_local $$73)
+ (i64.select
+ (get_local $$66)
+ (get_local $$8)
+ (i64.select
+ (get_local $$69)
+ (i64.or
+ (i64.select
+ (get_local $$66)
+ (get_local $$8)
+ (i64.select
+ (get_local $$62)
+ (i64.or
+ (get_local $$160)
+ (get_local $$161)
+ )
+ (get_local $$162)
+ )
+ )
+ (i64.select
+ (get_local $$67)
+ (get_local $$163)
+ (get_local $$51)
+ )
+ )
+ (i64.select
+ (get_local $$61)
+ (get_local $$4)
+ (i64.select
+ (get_local $$57)
+ (i64.or
+ (get_local $$158)
+ (get_local $$157)
+ )
+ (get_local $$159)
+ )
+ )
+ )
+ )
+ (get_local $$51)
+ )
+ )
+ (i64.store align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const 48)
+ )
+ (i64.select
+ (get_local $$73)
+ (i64.select
+ (get_local $$66)
+ (get_local $$7)
+ (i64.select
+ (get_local $$69)
+ (i64.or
+ (i64.select
+ (get_local $$66)
+ (get_local $$7)
+ (i64.select
+ (get_local $$62)
+ (i64.or
+ (get_local $$153)
+ (get_local $$154)
+ )
+ (get_local $$155)
+ )
+ )
+ (i64.select
+ (get_local $$67)
+ (get_local $$156)
+ (get_local $$51)
+ )
+ )
+ (i64.select
+ (get_local $$61)
+ (get_local $$3)
+ (i64.select
+ (get_local $$57)
+ (i64.or
+ (get_local $$151)
+ (get_local $$150)
+ )
+ (get_local $$152)
+ )
+ )
+ )
+ )
+ (get_local $$51)
+ )
+ )
+ (i64.store align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const 40)
+ )
+ (i64.select
+ (get_local $$73)
+ (i64.select
+ (get_local $$66)
+ (get_local $$6)
+ (i64.select
+ (get_local $$69)
+ (i64.or
+ (i64.select
+ (get_local $$62)
+ (get_local $$172)
+ (get_local $$51)
+ )
+ (i64.select
+ (get_local $$109)
+ (get_local $$2)
+ (i64.select
+ (get_local $$67)
+ (i64.or
+ (get_local $$169)
+ (get_local $$170)
+ )
+ (get_local $$171)
+ )
+ )
+ )
+ (i64.select
+ (get_local $$57)
+ (get_local $$173)
+ (get_local $$51)
+ )
+ )
+ )
+ (get_local $$51)
+ )
+ )
+ (i64.store align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const 32)
+ )
+ (i64.select
+ (get_local $$73)
+ (i64.select
+ (get_local $$66)
+ (get_local $$5)
+ (i64.select
+ (get_local $$69)
+ (i64.or
+ (i64.select
+ (get_local $$62)
+ (get_local $$167)
+ (get_local $$51)
+ )
+ (i64.select
+ (get_local $$109)
+ (get_local $$1)
+ (i64.select
+ (get_local $$67)
+ (i64.or
+ (get_local $$164)
+ (get_local $$165)
+ )
+ (get_local $$166)
+ )
+ )
+ )
+ (i64.select
+ (get_local $$57)
+ (get_local $$168)
+ (get_local $$51)
+ )
+ )
+ )
+ (get_local $$51)
+ )
+ )
+ (i64.store align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const 120)
+ )
+ (i64.select
+ (get_local $$66)
+ (get_local $$16)
+ (i64.select
+ (get_local $$73)
+ (i64.or
+ (i64.select
+ (get_local $$66)
+ (get_local $$16)
+ (i64.select
+ (get_local $$69)
+ (i64.or
+ (i64.select
+ (get_local $$66)
+ (get_local $$16)
+ (i64.select
+ (get_local $$62)
+ (i64.or
+ (get_local $$79)
+ (get_local $$80)
+ )
+ (get_local $$81)
+ )
+ )
+ (i64.select
+ (get_local $$67)
+ (get_local $$82)
+ (get_local $$51)
+ )
+ )
+ (i64.select
+ (get_local $$61)
+ (get_local $$12)
+ (i64.select
+ (get_local $$57)
+ (i64.or
+ (get_local $$77)
+ (get_local $$76)
+ )
+ (get_local $$78)
+ )
+ )
+ )
+ )
+ (i64.select
+ (get_local $$72)
+ (i64.select
+ (get_local $$70)
+ (get_local $$83)
+ (get_local $$51)
+ )
+ (get_local $$51)
+ )
+ )
+ (i64.select
+ (get_local $$54)
+ (get_local $$8)
+ (i64.select
+ (get_local $$56)
+ (i64.or
+ (i64.select
+ (get_local $$54)
+ (get_local $$8)
+ (i64.select
+ (get_local $$53)
+ (i64.or
+ (get_local $$33)
+ (get_local $$44)
+ )
+ (get_local $$46)
+ )
+ )
+ (i64.select
+ (get_local $$55)
+ (get_local $$75)
+ (get_local $$51)
+ )
+ )
+ (i64.select
+ (get_local $$52)
+ (get_local $$4)
+ (i64.select
+ (get_local $$50)
+ (i64.or
+ (get_local $$35)
+ (get_local $$17)
+ )
+ (get_local $$40)
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ (i64.store align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const 112)
+ )
+ (i64.select
+ (get_local $$66)
+ (get_local $$15)
+ (i64.select
+ (get_local $$73)
+ (i64.or
+ (i64.select
+ (get_local $$66)
+ (get_local $$15)
+ (i64.select
+ (get_local $$69)
+ (i64.or
+ (i64.select
+ (get_local $$66)
+ (get_local $$15)
+ (i64.select
+ (get_local $$62)
+ (i64.or
+ (get_local $$63)
+ (get_local $$64)
+ )
+ (get_local $$65)
+ )
+ )
+ (i64.select
+ (get_local $$67)
+ (get_local $$68)
+ (get_local $$51)
+ )
+ )
+ (i64.select
+ (get_local $$61)
+ (get_local $$11)
+ (i64.select
+ (get_local $$57)
+ (i64.or
+ (get_local $$59)
+ (get_local $$58)
+ )
+ (get_local $$60)
+ )
+ )
+ )
+ )
+ (i64.select
+ (get_local $$72)
+ (i64.select
+ (get_local $$70)
+ (get_local $$71)
+ (get_local $$51)
+ )
+ (get_local $$51)
+ )
+ )
+ (i64.select
+ (get_local $$54)
+ (get_local $$7)
+ (i64.select
+ (get_local $$56)
+ (i64.or
+ (i64.select
+ (get_local $$54)
+ (get_local $$7)
+ (i64.select
+ (get_local $$53)
+ (i64.or
+ (get_local $$36)
+ (get_local $$49)
+ )
+ (get_local $$38)
+ )
+ )
+ (i64.select
+ (get_local $$55)
+ (get_local $$41)
+ (get_local $$51)
+ )
+ )
+ (i64.select
+ (get_local $$52)
+ (get_local $$3)
+ (i64.select
+ (get_local $$50)
+ (i64.or
+ (get_local $$43)
+ (get_local $$39)
+ )
+ (get_local $$34)
+ )
+ )
+ )
+ )
+ )
+ )
+ )
+ (i64.store align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const 104)
+ )
+ (i64.select
+ (get_local $$66)
+ (get_local $$14)
+ (i64.select
+ (get_local $$73)
+ (i64.or
+ (i64.select
+ (get_local $$66)
+ (get_local $$14)
+ (i64.select
+ (get_local $$69)
+ (i64.or
+ (i64.select
+ (get_local $$62)
+ (get_local $$143)
+ (get_local $$51)
+ )
+ (i64.select
+ (get_local $$109)
+ (get_local $$10)
+ (i64.select
+ (get_local $$67)
+ (i64.or
+ (get_local $$140)
+ (get_local $$141)
+ )
+ (get_local $$142)
+ )
+ )
+ )
+ (i64.select
+ (get_local $$57)
+ (get_local $$144)
+ (get_local $$51)
+ )
+ )
+ )
+ (i64.select
+ (get_local $$72)
+ (i64.select
+ (get_local $$94)
+ (get_local $$6)
+ (i64.select
+ (get_local $$70)
+ (i64.or
+ (get_local $$137)
+ (get_local $$138)
+ )
+ (get_local $$139)
+ )
+ )
+ (get_local $$51)
+ )
+ )
+ (i64.select
+ (get_local $$54)
+ (get_local $$6)
+ (i64.select
+ (get_local $$56)
+ (i64.or
+ (i64.select
+ (get_local $$53)
+ (get_local $$148)
+ (get_local $$51)
+ )
+ (i64.select
+ (get_local $$135)
+ (get_local $$2)
+ (i64.select
+ (get_local $$55)
+ (i64.or
+ (get_local $$145)
+ (get_local $$146)
+ )
+ (get_local $$147)
+ )
+ )
+ )
+ (i64.select
+ (get_local $$50)
+ (get_local $$149)
+ (get_local $$51)
+ )
+ )
+ )
+ )
+ )
+ )
+ (i64.store align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const 96)
+ )
+ (i64.select
+ (get_local $$66)
+ (get_local $$13)
+ (i64.select
+ (get_local $$73)
+ (i64.or
+ (i64.select
+ (get_local $$66)
+ (get_local $$13)
+ (i64.select
+ (get_local $$69)
+ (i64.or
+ (i64.select
+ (get_local $$62)
+ (get_local $$130)
+ (get_local $$51)
+ )
+ (i64.select
+ (get_local $$109)
+ (get_local $$9)
+ (i64.select
+ (get_local $$67)
+ (i64.or
+ (get_local $$127)
+ (get_local $$128)
+ )
+ (get_local $$129)
+ )
+ )
+ )
+ (i64.select
+ (get_local $$57)
+ (get_local $$131)
+ (get_local $$51)
+ )
+ )
+ )
+ (i64.select
+ (get_local $$72)
+ (i64.select
+ (get_local $$94)
+ (get_local $$5)
+ (i64.select
+ (get_local $$70)
+ (i64.or
+ (get_local $$124)
+ (get_local $$125)
+ )
+ (get_local $$126)
+ )
+ )
+ (get_local $$51)
+ )
+ )
+ (i64.select
+ (get_local $$54)
+ (get_local $$5)
+ (i64.select
+ (get_local $$56)
+ (i64.or
+ (i64.select
+ (get_local $$53)
+ (get_local $$136)
+ (get_local $$51)
+ )
+ (i64.select
+ (get_local $$135)
+ (get_local $$1)
+ (i64.select
+ (get_local $$55)
+ (i64.or
+ (get_local $$132)
+ (get_local $$133)
+ )
+ (get_local $$134)
+ )
+ )
+ )
+ (i64.select
+ (get_local $$50)
+ (get_local $$37)
+ (get_local $$51)
+ )
+ )
+ )
+ )
+ )
+ )
+ (i64.store align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const 72)
+ )
+ (i64.select
+ (get_local $$66)
+ (get_local $$10)
+ (i64.select
+ (get_local $$73)
+ (i64.or
+ (i64.select
+ (get_local $$69)
+ (i64.select
+ (get_local $$62)
+ (get_local $$122)
+ (get_local $$51)
+ )
+ (get_local $$51)
+ )
+ (i64.select
+ (get_local $$94)
+ (get_local $$2)
+ (i64.select
+ (get_local $$72)
+ (i64.or
+ (i64.select
+ (get_local $$94)
+ (get_local $$2)
+ (i64.select
+ (get_local $$70)
+ (i64.or
+ (get_local $$118)
+ (get_local $$119)
+ )
+ (get_local $$120)
+ )
+ )
+ (i64.select
+ (get_local $$87)
+ (get_local $$121)
+ (get_local $$51)
+ )
+ )
+ (i64.select
+ (get_local $$109)
+ (get_local $$6)
+ (i64.select
+ (get_local $$67)
+ (i64.or
+ (get_local $$115)
+ (get_local $$116)
+ )
+ (get_local $$117)
+ )
+ )
+ )
+ )
+ )
+ (i64.select
+ (get_local $$56)
+ (i64.select
+ (get_local $$53)
+ (get_local $$123)
+ (get_local $$51)
+ )
+ (get_local $$51)
+ )
+ )
+ )
+ )
+ (i64.store align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const 64)
+ )
+ (i64.select
+ (get_local $$66)
+ (get_local $$9)
+ (i64.select
+ (get_local $$73)
+ (i64.or
+ (i64.select
+ (get_local $$69)
+ (i64.select
+ (get_local $$62)
+ (get_local $$114)
+ (get_local $$51)
+ )
+ (get_local $$51)
+ )
+ (i64.select
+ (get_local $$94)
+ (get_local $$1)
+ (i64.select
+ (get_local $$72)
+ (i64.or
+ (i64.select
+ (get_local $$94)
+ (get_local $$1)
+ (i64.select
+ (get_local $$70)
+ (i64.or
+ (get_local $$110)
+ (get_local $$111)
+ )
+ (get_local $$112)
+ )
+ )
+ (i64.select
+ (get_local $$87)
+ (get_local $$113)
+ (get_local $$51)
+ )
+ )
+ (i64.select
+ (get_local $$109)
+ (get_local $$5)
+ (i64.select
+ (get_local $$67)
+ (i64.or
+ (get_local $$106)
+ (get_local $$107)
+ )
+ (get_local $$108)
+ )
+ )
+ )
+ )
+ )
+ (i64.select
+ (get_local $$56)
+ (i64.select
+ (get_local $$53)
+ (get_local $$45)
+ (get_local $$51)
+ )
+ (get_local $$51)
+ )
+ )
+ )
+ )
+ (i64.store align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const 88)
+ )
+ (i64.select
+ (get_local $$66)
+ (get_local $$12)
+ (i64.select
+ (get_local $$73)
+ (i64.or
+ (i64.select
+ (get_local $$69)
+ (i64.select
+ (get_local $$66)
+ (get_local $$12)
+ (i64.select
+ (get_local $$62)
+ (i64.or
+ (get_local $$47)
+ (get_local $$48)
+ )
+ (get_local $$97)
+ )
+ )
+ (get_local $$51)
+ )
+ (i64.select
+ (get_local $$94)
+ (get_local $$4)
+ (i64.select
+ (get_local $$72)
+ (i64.or
+ (i64.select
+ (get_local $$70)
+ (get_local $$101)
+ (get_local $$51)
+ )
+ (i64.select
+ (get_local $$91)
+ (get_local $$8)
+ (i64.select
+ (get_local $$87)
+ (i64.or
+ (get_local $$98)
+ (get_local $$99)
+ )
+ (get_local $$100)
+ )
+ )
+ )
+ (i64.select
+ (get_local $$67)
+ (get_local $$102)
+ (get_local $$51)
+ )
+ )
+ )
+ )
+ (i64.select
+ (get_local $$56)
+ (i64.select
+ (get_local $$54)
+ (get_local $$4)
+ (i64.select
+ (get_local $$53)
+ (i64.or
+ (get_local $$104)
+ (get_local $$103)
+ )
+ (get_local $$105)
+ )
+ )
+ (get_local $$51)
+ )
+ )
+ )
+ )
+ (i64.store align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const 80)
+ )
+ (i64.select
+ (get_local $$66)
+ (get_local $$11)
+ (i64.select
+ (get_local $$73)
+ (i64.or
+ (i64.select
+ (get_local $$69)
+ (i64.select
+ (get_local $$66)
+ (get_local $$11)
+ (i64.select
+ (get_local $$62)
+ (i64.or
+ (get_local $$84)
+ (get_local $$85)
+ )
+ (get_local $$86)
+ )
+ )
+ (get_local $$51)
+ )
+ (i64.select
+ (get_local $$94)
+ (get_local $$3)
+ (i64.select
+ (get_local $$72)
+ (i64.or
+ (i64.select
+ (get_local $$70)
+ (get_local $$92)
+ (get_local $$51)
+ )
+ (i64.select
+ (get_local $$91)
+ (get_local $$7)
+ (i64.select
+ (get_local $$87)
+ (i64.or
+ (get_local $$88)
+ (get_local $$89)
+ )
+ (get_local $$90)
+ )
+ )
+ )
+ (i64.select
+ (get_local $$67)
+ (get_local $$93)
+ (get_local $$51)
+ )
+ )
+ )
+ )
+ (i64.select
+ (get_local $$56)
+ (i64.select
+ (get_local $$54)
+ (get_local $$3)
+ (i64.select
+ (get_local $$53)
+ (i64.or
+ (get_local $$96)
+ (get_local $$95)
+ )
+ (get_local $$42)
+ )
+ )
+ (get_local $$51)
+ )
+ )
+ )
+ )
+ (set_local $$183
+ (i32.const 1024)
+ )
+ (set_local $$279
+ (i32.add
+ (get_local $$279)
+ (get_local $$183)
+ )
+ )
+ (set_local $$183
+ (i32.const 0)
+ )
+ (set_local $$279
+ (i32.store align=4
+ (get_local $$183)
+ (get_local $$279)
+ )
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/load-ext.wast b/test/dot_s/load-ext.wast
index 2505adea4..58b6845ff 100644
--- a/test/dot_s/load-ext.wast
+++ b/test/dot_s/load-ext.wast
@@ -121,4 +121,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/load-store-i1.wast b/test/dot_s/load-store-i1.wast
index 7acb8faea..9a453362f 100644
--- a/test/dot_s/load-store-i1.wast
+++ b/test/dot_s/load-store-i1.wast
@@ -99,4 +99,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/load.wast b/test/dot_s/load.wast
index 9f367eed6..b718df93e 100644
--- a/test/dot_s/load.wast
+++ b/test/dot_s/load.wast
@@ -61,4 +61,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/memops.wast b/test/dot_s/memops.wast
index 61926bd18..f0a3c5390 100644
--- a/test/dot_s/memops.wast
+++ b/test/dot_s/memops.wast
@@ -219,4 +219,4 @@
)
)
)
-; METADATA: { "asmConsts": {"0": ["{ Module.print(\"hello, world! \" + HEAP32[8>>2]); }", ["vi"]]} } \ No newline at end of file
+;; METADATA: { "asmConsts": {"0": ["{ Module.print(\"hello, world! \" + HEAP32[8>>2]); }", ["vi"]]} } \ No newline at end of file
diff --git a/test/dot_s/memory-addr32.wast b/test/dot_s/memory-addr32.wast
index d38b88a75..475da10d6 100644
--- a/test/dot_s/memory-addr32.wast
+++ b/test/dot_s/memory-addr32.wast
@@ -20,4 +20,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/memory-addr64.wast b/test/dot_s/memory-addr64.wast
index e95e08681..f20ad55a7 100644
--- a/test/dot_s/memory-addr64.wast
+++ b/test/dot_s/memory-addr64.wast
@@ -20,4 +20,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/minimal.wast b/test/dot_s/minimal.wast
index 630873c36..3db3bf1de 100644
--- a/test/dot_s/minimal.wast
+++ b/test/dot_s/minimal.wast
@@ -11,4 +11,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/offset-folding.wast b/test/dot_s/offset-folding.wast
index d643b058c..f53b26d9a 100644
--- a/test/dot_s/offset-folding.wast
+++ b/test/dot_s/offset-folding.wast
@@ -41,4 +41,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/offset.wast b/test/dot_s/offset.wast
new file mode 100644
index 000000000..24baaaeda
--- /dev/null
+++ b/test/dot_s/offset.wast
@@ -0,0 +1,408 @@
+(module
+ (memory 0 4294967295 (segment 2 "\00\00\00\00"))
+ (export "load_i32_with_folded_offset" $load_i32_with_folded_offset)
+ (export "load_i32_with_folded_gep_offset" $load_i32_with_folded_gep_offset)
+ (export "load_i32_with_unfolded_gep_negative_offset" $load_i32_with_unfolded_gep_negative_offset)
+ (export "load_i32_with_unfolded_offset" $load_i32_with_unfolded_offset)
+ (export "load_i32_with_unfolded_gep_offset" $load_i32_with_unfolded_gep_offset)
+ (export "load_i64_with_folded_offset" $load_i64_with_folded_offset)
+ (export "load_i64_with_folded_gep_offset" $load_i64_with_folded_gep_offset)
+ (export "load_i64_with_unfolded_gep_negative_offset" $load_i64_with_unfolded_gep_negative_offset)
+ (export "load_i64_with_unfolded_offset" $load_i64_with_unfolded_offset)
+ (export "load_i64_with_unfolded_gep_offset" $load_i64_with_unfolded_gep_offset)
+ (export "store_i32_with_folded_offset" $store_i32_with_folded_offset)
+ (export "store_i32_with_folded_gep_offset" $store_i32_with_folded_gep_offset)
+ (export "store_i32_with_unfolded_gep_negative_offset" $store_i32_with_unfolded_gep_negative_offset)
+ (export "store_i32_with_unfolded_offset" $store_i32_with_unfolded_offset)
+ (export "store_i32_with_unfolded_gep_offset" $store_i32_with_unfolded_gep_offset)
+ (export "store_i64_with_folded_offset" $store_i64_with_folded_offset)
+ (export "store_i64_with_folded_gep_offset" $store_i64_with_folded_gep_offset)
+ (export "store_i64_with_unfolded_gep_negative_offset" $store_i64_with_unfolded_gep_negative_offset)
+ (export "store_i64_with_unfolded_offset" $store_i64_with_unfolded_offset)
+ (export "store_i64_with_unfolded_gep_offset" $store_i64_with_unfolded_gep_offset)
+ (export "load_i32_from_numeric_address" $load_i32_from_numeric_address)
+ (export "load_i32_from_global_address" $load_i32_from_global_address)
+ (export "store_i32_to_numeric_address" $store_i32_to_numeric_address)
+ (export "store_i32_to_global_address" $store_i32_to_global_address)
+ (export "load_i8_s_with_folded_offset" $load_i8_s_with_folded_offset)
+ (export "load_i8_s_with_folded_gep_offset" $load_i8_s_with_folded_gep_offset)
+ (export "load_i8_u_with_folded_offset" $load_i8_u_with_folded_offset)
+ (export "load_i8_u_with_folded_gep_offset" $load_i8_u_with_folded_gep_offset)
+ (export "store_i8_with_folded_offset" $store_i8_with_folded_offset)
+ (export "store_i8_with_folded_gep_offset" $store_i8_with_folded_gep_offset)
+ (func $load_i32_with_folded_offset (param $$0 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.load align=4 offset=24
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $load_i32_with_folded_gep_offset (param $$0 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.load align=4 offset=24
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $load_i32_with_unfolded_gep_negative_offset (param $$0 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.load align=4
+ (i32.add
+ (get_local $$0)
+ (i32.const -24)
+ )
+ )
+ )
+ )
+ )
+ )
+ (func $load_i32_with_unfolded_offset (param $$0 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.load align=4
+ (i32.add
+ (get_local $$0)
+ (i32.const 24)
+ )
+ )
+ )
+ )
+ )
+ )
+ (func $load_i32_with_unfolded_gep_offset (param $$0 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.load align=4
+ (i32.add
+ (get_local $$0)
+ (i32.const 24)
+ )
+ )
+ )
+ )
+ )
+ )
+ (func $load_i64_with_folded_offset (param $$0 i32) (result i64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i64.load align=8 offset=24
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $load_i64_with_folded_gep_offset (param $$0 i32) (result i64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i64.load align=8 offset=24
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $load_i64_with_unfolded_gep_negative_offset (param $$0 i32) (result i64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i64.load align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const -24)
+ )
+ )
+ )
+ )
+ )
+ )
+ (func $load_i64_with_unfolded_offset (param $$0 i32) (result i64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i64.load align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const 24)
+ )
+ )
+ )
+ )
+ )
+ )
+ (func $load_i64_with_unfolded_gep_offset (param $$0 i32) (result i64)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i64.load align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const 24)
+ )
+ )
+ )
+ )
+ )
+ )
+ (func $store_i32_with_folded_offset (param $$0 i32)
+ (block $fake_return_waka123
+ (block
+ (i32.store align=4 offset=24
+ (get_local $$0)
+ (i32.const 0)
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+ (func $store_i32_with_folded_gep_offset (param $$0 i32)
+ (block $fake_return_waka123
+ (block
+ (i32.store align=4 offset=24
+ (get_local $$0)
+ (i32.const 0)
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+ (func $store_i32_with_unfolded_gep_negative_offset (param $$0 i32)
+ (block $fake_return_waka123
+ (block
+ (i32.store align=4
+ (i32.add
+ (get_local $$0)
+ (i32.const -24)
+ )
+ (i32.const 0)
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+ (func $store_i32_with_unfolded_offset (param $$0 i32)
+ (block $fake_return_waka123
+ (block
+ (i32.store align=4
+ (i32.add
+ (get_local $$0)
+ (i32.const 24)
+ )
+ (i32.const 0)
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+ (func $store_i32_with_unfolded_gep_offset (param $$0 i32)
+ (block $fake_return_waka123
+ (block
+ (i32.store align=4
+ (i32.add
+ (get_local $$0)
+ (i32.const 24)
+ )
+ (i32.const 0)
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+ (func $store_i64_with_folded_offset (param $$0 i32)
+ (block $fake_return_waka123
+ (block
+ (i64.store align=8 offset=24
+ (get_local $$0)
+ (i64.const 0)
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+ (func $store_i64_with_folded_gep_offset (param $$0 i32)
+ (block $fake_return_waka123
+ (block
+ (i64.store align=8 offset=24
+ (get_local $$0)
+ (i64.const 0)
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+ (func $store_i64_with_unfolded_gep_negative_offset (param $$0 i32)
+ (block $fake_return_waka123
+ (block
+ (i64.store align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const -24)
+ )
+ (i64.const 0)
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+ (func $store_i64_with_unfolded_offset (param $$0 i32)
+ (block $fake_return_waka123
+ (block
+ (i64.store align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const 24)
+ )
+ (i64.const 0)
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+ (func $store_i64_with_unfolded_gep_offset (param $$0 i32)
+ (block $fake_return_waka123
+ (block
+ (i64.store align=8
+ (i32.add
+ (get_local $$0)
+ (i32.const 24)
+ )
+ (i64.const 0)
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+ (func $load_i32_from_numeric_address (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.load align=4 offset=42
+ (i32.const 0)
+ )
+ )
+ )
+ )
+ )
+ (func $load_i32_from_global_address (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.load align=4 offset=2
+ (i32.const 0)
+ )
+ )
+ )
+ )
+ )
+ (func $store_i32_to_numeric_address
+ (local $$0 i32)
+ (block $fake_return_waka123
+ (block
+ (set_local $$0
+ (i32.const 0)
+ )
+ (i32.store align=4 offset=42
+ (get_local $$0)
+ (get_local $$0)
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+ (func $store_i32_to_global_address
+ (local $$0 i32)
+ (block $fake_return_waka123
+ (block
+ (set_local $$0
+ (i32.const 0)
+ )
+ (i32.store align=4 offset=2
+ (get_local $$0)
+ (get_local $$0)
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+ (func $load_i8_s_with_folded_offset (param $$0 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.load align=8 offset=24
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $load_i8_s_with_folded_gep_offset (param $$0 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.load align=8 offset=24
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $load_i8_u_with_folded_offset (param $$0 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.load align=8 offset=24
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $load_i8_u_with_folded_gep_offset (param $$0 i32) (result i32)
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123
+ (i32.load align=8 offset=24
+ (get_local $$0)
+ )
+ )
+ )
+ )
+ )
+ (func $store_i8_with_folded_offset (param $$0 i32)
+ (block $fake_return_waka123
+ (block
+ (i32.store align=8 offset=24
+ (get_local $$0)
+ (i32.const 0)
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+ (func $store_i8_with_folded_gep_offset (param $$0 i32)
+ (block $fake_return_waka123
+ (block
+ (i32.store align=8 offset=24
+ (get_local $$0)
+ (i32.const 0)
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+)
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/permute.wast b/test/dot_s/permute.wast
index 0f147811f..9e984ca19 100644
--- a/test/dot_s/permute.wast
+++ b/test/dot_s/permute.wast
@@ -1,4 +1,4 @@
(module
(memory 0 4294967295 (segment 4 "hE?\8ds\0e7\db[g\8f\955it\c4k\0b\e2\ef\bcld\e0\fd\8c\9e\86&~\d8\94\89+\c8\a4\c2\f2\fb\12\1cej\d99\b7\b3W\c6w\af\ae\caM>\92ub\96\84\b6\b0N\ec;q\11\f7\bf\e31\e6\a7\90\fc\03\e4\aa\d7\cc- \15\83DH\80r\fa\01X\eb:_\00A\cd\e9o`n\ac(\ad\ba0\dcyS#\f4$\"\82\7f}\8e\f6\93L\'\bb\bdZ\ed4\18\f3\c0\cf\ff\a3\f8\07\05\9c\d3\0f\a0\06m%\\\f9^B<\e7\b1\17\98]\0c\dd\c5\f5p\e5\fezJ\ab,F\a5@\08R\85!\b8\1a\ce\d5\04\nI\a6\d1\9f\8a\c9\a9|\97\9aG\be8Y\8b\c1\1b\d4\ea\b9\19\14\9b\9163\d0\1d\d2\df=C\1f\0dc\e1\c7QUv\02\b5aK\b4\tV\c3x\e8\a1\1e\81\de/{\da\d6Pf\10T\f0)\88\16\ee\a8\9d\f1\cbO*\b2\99\132\87.\a2"))
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/phi.wast b/test/dot_s/phi.wast
index 2fb0ddf1e..72f094e85 100644
--- a/test/dot_s/phi.wast
+++ b/test/dot_s/phi.wast
@@ -79,4 +79,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/reg-stackify.wast b/test/dot_s/reg-stackify.wast
index 74d3d94b5..c714fbb29 100644
--- a/test/dot_s/reg-stackify.wast
+++ b/test/dot_s/reg-stackify.wast
@@ -118,4 +118,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/relocation.wast b/test/dot_s/relocation.wast
index 6a5fb576d..0b87203fb 100644
--- a/test/dot_s/relocation.wast
+++ b/test/dot_s/relocation.wast
@@ -14,4 +14,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/return-int32.wast b/test/dot_s/return-int32.wast
index 3cc667d36..6bc521154 100644
--- a/test/dot_s/return-int32.wast
+++ b/test/dot_s/return-int32.wast
@@ -11,4 +11,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/return-void.wast b/test/dot_s/return-void.wast
index 54d604547..59f5aeb06 100644
--- a/test/dot_s/return-void.wast
+++ b/test/dot_s/return-void.wast
@@ -9,4 +9,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/returned.wast b/test/dot_s/returned.wast
index 6b1c58735..003b54e57 100644
--- a/test/dot_s/returned.wast
+++ b/test/dot_s/returned.wast
@@ -32,4 +32,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/select.wast b/test/dot_s/select.wast
index 7c8d32c37..54f788fcf 100644
--- a/test/dot_s/select.wast
+++ b/test/dot_s/select.wast
@@ -169,4 +169,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/signext-zeroext.wast b/test/dot_s/signext-zeroext.wast
index ddd3e85af..87140b506 100644
--- a/test/dot_s/signext-zeroext.wast
+++ b/test/dot_s/signext-zeroext.wast
@@ -77,4 +77,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/store-results.wast b/test/dot_s/store-results.wast
index 53409afd1..3359b2433 100644
--- a/test/dot_s/store-results.wast
+++ b/test/dot_s/store-results.wast
@@ -28,16 +28,16 @@
)
(loop $BB1_2 $BB1_1
(block
- (i32.store align=4
- (i32.const 0)
- (get_local $$0)
- )
(set_local $$1
(i32.add
(get_local $$1)
(i32.const 1)
)
)
+ (i32.store align=4 offset=2
+ (get_local $$0)
+ (get_local $$0)
+ )
(br_if
(i32.ne
(get_local $$1)
@@ -56,24 +56,24 @@
(local $$1 f32)
(block $fake_return_waka123
(block
- (set_local $$0
- (i32.const 0)
- )
(set_local $$1
(f32.const 0)
)
+ (set_local $$0
+ (i32.const 0)
+ )
(loop $BB2_2 $BB2_1
(block
- (i32.store align=4
- (get_local $$0)
- (i32.const 0)
- )
(set_local $$1
(f32.add
(get_local $$1)
(f32.const 1)
)
)
+ (i32.store align=4 offset=2
+ (get_local $$0)
+ (get_local $$0)
+ )
(br_if
(f32.ne
(get_local $$1)
@@ -88,4 +88,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/store-trunc.wast b/test/dot_s/store-trunc.wast
index 7496b0ee8..a10f57ffd 100644
--- a/test/dot_s/store-trunc.wast
+++ b/test/dot_s/store-trunc.wast
@@ -73,4 +73,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/store.wast b/test/dot_s/store.wast
index ddff6f633..75c7176f1 100644
--- a/test/dot_s/store.wast
+++ b/test/dot_s/store.wast
@@ -61,4 +61,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/switch.wast b/test/dot_s/switch.wast
index 0e7f8f03d..e88769ed7 100644
--- a/test/dot_s/switch.wast
+++ b/test/dot_s/switch.wast
@@ -97,4 +97,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/symbolic-offset.wast b/test/dot_s/symbolic-offset.wast
new file mode 100644
index 000000000..d28ceec85
--- /dev/null
+++ b/test/dot_s/symbolic-offset.wast
@@ -0,0 +1,16 @@
+(module
+ (memory 0 4294967295 (segment 2 "\01\00\00\00\00\00\00\00\00\00\00\00"))
+ (export "f" $f)
+ (func $f (param $$0 i32) (param $$1 i32)
+ (block $fake_return_waka123
+ (block
+ (i32.store align=4 offset=6
+ (get_local $$0)
+ (get_local $$1)
+ )
+ (br $fake_return_waka123)
+ )
+ )
+ )
+)
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/unreachable.wast b/test/dot_s/unreachable.wast
index 1d402392f..1a51e8e09 100644
--- a/test/dot_s/unreachable.wast
+++ b/test/dot_s/unreachable.wast
@@ -27,4 +27,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/unused-argument.wast b/test/dot_s/unused-argument.wast
index 9b3ba16ab..1f5418909 100644
--- a/test/dot_s/unused-argument.wast
+++ b/test/dot_s/unused-argument.wast
@@ -31,4 +31,4 @@
)
)
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/dot_s/varargs.wast b/test/dot_s/varargs.wast
index c4e7e50b0..27e95ece7 100644
--- a/test/dot_s/varargs.wast
+++ b/test/dot_s/varargs.wast
@@ -7,6 +7,7 @@
(export "arg_i32" $arg_i32)
(export "arg_i128" $arg_i128)
(export "caller_none" $caller_none)
+ (export "caller_some" $caller_some)
(func $end (param $$0 i32)
(block $fake_return_waka123
(block
@@ -148,5 +149,12 @@
)
)
)
+ (func $caller_some
+ (block $fake_return_waka123
+ (block
+ (br $fake_return_waka123)
+ )
+ )
+ )
)
-; METADATA: { "asmConsts": {} } \ No newline at end of file
+;; METADATA: { "asmConsts": {} } \ No newline at end of file
diff --git a/test/experimental b/test/experimental
-Subproject db4b424b5d4215cf5be848b7635bc1f90ff3638
+Subproject 6419f6861385627c255d0e2ab8c4b7bcc8daf59