summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2019-03-01 10:28:07 -0800
committerGitHub <noreply@github.com>2019-03-01 10:28:07 -0800
commit689fe405a3417fbfd59456035add6f6f53149f35 (patch)
treed6f1dcaf0cbb85eb3ae830f68a46c9a6627d1562
parentf59c3033e678ced61bc8c78e8ac9fbee31ef0210 (diff)
downloadbinaryen-689fe405a3417fbfd59456035add6f6f53149f35.tar.gz
binaryen-689fe405a3417fbfd59456035add6f6f53149f35.tar.bz2
binaryen-689fe405a3417fbfd59456035add6f6f53149f35.zip
Consistently optimize small added constants into load/store offsets (#1924)
See #1919 - we did not do this consistently before. This adds a lowMemoryUnused option to PassOptions. It can be passed on the commandline with --low-memory-unused. If enabled, we run the new optimize-added-constants pass, which does the real work here, replacing older code in post-emscripten. Aside from running at the proper time (unlike the old pass, see #1919), this also has a -propagate mode, which can do stuff like this: y = x + 10 [..] load(y) [..] load(y) => y = x + 10 [..] load(x, offset=10) [..] load(x, offset=10) That is, it can propagate such offsets to the loads/stores. This pattern is common in big interpreter loops, where the pointers are offsets into a big struct of state. The pass does this propagation by using a new feature of LocalGraph, which can verify which locals are in SSA mode. Binaryen IR is not SSA (intentionally, since it's a later IR), but if a local only has a single set for all gets, that means that local is in such a state, and can be optimized. The tricky thing is that all locals are initialized to zero, so there are at minimum two sets. But if we verify that the real set dominates all the gets, then the zero initialization cannot reach them, and we are safe. This PR also makes safe-heap aware of lowMemoryUnused. If so, we check for not just an access of 0, but the range 0-1023. This makes zlib 5% faster, with either the wasm backend or asm2wasm. It also makes it 0.5% smaller. Also helps sqlite (1.5% faster) and lua (1% faster)
-rwxr-xr-xbuild-js.sh1
-rw-r--r--src/asm2wasm.h3
-rw-r--r--src/ir/LocalGraph.cpp33
-rw-r--r--src/ir/local-graph.h33
-rw-r--r--src/pass.h28
-rw-r--r--src/passes/CMakeLists.txt1
-rw-r--r--src/passes/CodePushing.cpp6
-rw-r--r--src/passes/OptimizeAddedConstants.cpp239
-rw-r--r--src/passes/PickLoadSigns.cpp38
-rw-r--r--src/passes/PostEmscripten.cpp60
-rw-r--r--src/passes/Precompute.cpp7
-rw-r--r--src/passes/SafeHeap.cpp9
-rw-r--r--src/passes/pass.cpp9
-rw-r--r--src/passes/passes.h2
-rw-r--r--src/tools/optimization-options.h5
-rw-r--r--src/wasm.h6
-rw-r--r--src/wasm/wasm-s-parser.cpp4
-rw-r--r--test/emcc_O2_hello_world.fromasm221
-rw-r--r--test/emcc_O2_hello_world.fromasm.clamp221
-rw-r--r--test/emcc_O2_hello_world.fromasm.imprecise217
-rw-r--r--test/emcc_hello_world.fromasm9413
-rw-r--r--test/emcc_hello_world.fromasm.clamp9413
-rw-r--r--test/emcc_hello_world.fromasm.imprecise9345
-rw-r--r--test/memorygrowth.fromasm204
-rw-r--r--test/memorygrowth.fromasm.clamp204
-rw-r--r--test/memorygrowth.fromasm.imprecise209
-rw-r--r--test/passes/optimize-added-constants-propagate_low-memory-unused.txt410
-rw-r--r--test/passes/optimize-added-constants-propagate_low-memory-unused.wast415
-rw-r--r--test/passes/optimize-added-constants_low-memory-unused.txt383
-rw-r--r--test/passes/optimize-added-constants_low-memory-unused.wast391
-rw-r--r--test/passes/post-emscripten.txt117
-rw-r--r--test/passes/post-emscripten.wast151
-rw-r--r--test/passes/precompute-propagate.txt1
-rw-r--r--test/passes/precompute-propagate.wast1
-rw-r--r--test/passes/safe-heap_low-memory-unused.txt9800
-rw-r--r--test/passes/safe-heap_low-memory-unused.wast56
36 files changed, 26429 insertions, 15227 deletions
diff --git a/build-js.sh b/build-js.sh
index 63f881ea8..06141dea2 100755
--- a/build-js.sh
+++ b/build-js.sh
@@ -117,6 +117,7 @@ echo "building shared bitcode"
$BINARYEN_SRC/passes/MinifyImportsAndExports.cpp \
$BINARYEN_SRC/passes/NameList.cpp \
$BINARYEN_SRC/passes/NoExitRuntime.cpp \
+ $BINARYEN_SRC/passes/OptimizeAddedConstants.cpp \
$BINARYEN_SRC/passes/OptimizeInstructions.cpp \
$BINARYEN_SRC/passes/PickLoadSigns.cpp \
$BINARYEN_SRC/passes/PostEmscripten.cpp \
diff --git a/src/asm2wasm.h b/src/asm2wasm.h
index c193791f8..9a68542a5 100644
--- a/src/asm2wasm.h
+++ b/src/asm2wasm.h
@@ -957,6 +957,7 @@ void Asm2WasmBuilder::processAsm(Ref ast) {
}
optimizingBuilder = make_unique<OptimizingIncrementalModuleBuilder>(&wasm, numFunctions, passOptions, [&](PassRunner& passRunner) {
// addPrePasses
+ passRunner.options.lowMemoryUnused = true;
if (debug) {
passRunner.setDebug(true);
passRunner.setValidateGlobally(false);
@@ -1189,6 +1190,7 @@ void Asm2WasmBuilder::processAsm(Ref ast) {
// functions). Optimize those now. Typically there are very few, just do it
// sequentially.
PassRunner passRunner(&wasm, passOptions);
+ passRunner.options.lowMemoryUnused = true;
passRunner.addDefaultFunctionOptimizationPasses();
for (auto& pair : trappingFunctions.getFunctions()) {
auto* func = pair.second;
@@ -1447,6 +1449,7 @@ void Asm2WasmBuilder::processAsm(Ref ast) {
};
PassRunner passRunner(&wasm, passOptions);
+ passRunner.options.lowMemoryUnused = true;
passRunner.setFeatures(passOptions.features);
if (debug) {
passRunner.setDebug(true);
diff --git a/src/ir/LocalGraph.cpp b/src/ir/LocalGraph.cpp
index 6a99ed44e..1cf883c19 100644
--- a/src/ir/LocalGraph.cpp
+++ b/src/ir/LocalGraph.cpp
@@ -242,5 +242,38 @@ void LocalGraph::computeInfluences() {
}
}
+void LocalGraph::computeSSAIndexes() {
+ std::unordered_map<Index, std::set<SetLocal*>> indexSets;
+ for (auto& pair : getSetses) {
+ auto* get = pair.first;
+ auto& sets = pair.second;
+ for (auto* set : sets) {
+ indexSets[get->index].insert(set);
+ }
+ }
+ for (auto& pair : locations) {
+ auto* curr = pair.first;
+ if (auto* set = curr->dynCast<SetLocal>()) {
+ auto& sets = indexSets[set->index];
+ if (sets.size() == 1 && *sets.begin() != curr) {
+ // While it has just one set, it is not the right one (us),
+ // so mark it invalid.
+ sets.clear();
+ }
+ }
+ }
+ for (auto& pair : indexSets) {
+ auto index = pair.first;
+ auto& sets = pair.second;
+ if (sets.size() == 1) {
+ SSAIndexes.insert(index);
+ }
+ }
+}
+
+bool LocalGraph::isSSA(Index x) {
+ return SSAIndexes.count(x);
+}
+
} // namespace wasm
diff --git a/src/ir/local-graph.h b/src/ir/local-graph.h
index 725be0536..fd6a496c0 100644
--- a/src/ir/local-graph.h
+++ b/src/ir/local-graph.h
@@ -45,13 +45,40 @@ struct LocalGraph {
// value (0 for a var, the received value for a param)
Locations locations; // where each get and set is (for easy replacing)
- // optional computation: compute the influence graphs between sets and gets
- // (useful for algorithms that propagate changes)
+ // Optional: compute the influence graphs between sets and gets
+ // (useful for algorithms that propagate changes).
+
+ void computeInfluences();
std::unordered_map<GetLocal*, std::unordered_set<SetLocal*>> getInfluences; // for each get, the sets whose values are influenced by that get
std::unordered_map<SetLocal*, std::unordered_set<GetLocal*>> setInfluences; // for each set, the gets whose values are influenced by that set
- void computeInfluences();
+ // Optional: Compute the local indexes that are SSA, in the sense of
+ // * a single set for all the gets for that local index
+ // * the set dominates all the gets (logically implied by the former property)
+ // * no other set (aside from the zero-init)
+ // The third property is not exactly standard SSA, but is useful since we are not in
+ // SSA form in our IR. To see why it matters, consider these:
+ //
+ // x = 0 // zero init
+ // [..]
+ // x = 10
+ // y = x + 20
+ // x = 30 // !!!
+ // f(y)
+ //
+ // The !!! line violates that property - it is another set for x, and it may interfere
+ // say with replacing f(y) with f(x + 20). Instead, if we know the only other possible set for x
+ // is the zero init, then things like the !!! line cannot exist, and it is valid to replace
+ // f(y) with f(x + 20).
+ // (This could be simpler, but in wasm the zero init always exists.)
+
+ void computeSSAIndexes();
+
+ bool isSSA(Index x);
+
+private:
+ std::set<Index> SSAIndexes;
};
} // namespace wasm
diff --git a/src/pass.h b/src/pass.h
index 78d1f594e..9ef159d7d 100644
--- a/src/pass.h
+++ b/src/pass.h
@@ -56,14 +56,26 @@ private:
};
struct PassOptions {
- bool debug = false; // run passes in debug mode, doing extra validation and timing checks
- bool validate = true; // whether to run the validator to check for errors
- bool validateGlobally = false; // when validating validate globally and not just locally
- int optimizeLevel = 0; // 0, 1, 2 correspond to -O0, -O1, -O2, etc.
- int shrinkLevel = 0; // 0, 1, 2 correspond to -O0, -Os, -Oz
- bool ignoreImplicitTraps = false; // optimize assuming things like div by 0, bad load/store, will not trap
- bool debugInfo = false; // whether to try to preserve debug info through, which are special calls
- FeatureSet features = FeatureSet::All; // Which wasm features to accept, and be allowed to use
+ // Run passes in debug mode, doing extra validation and timing checks.
+ bool debug = false;
+ // Whether to run the validator to check for errors.
+ bool validate = true;
+ // When validating validate globally and not just locally
+ bool validateGlobally = false;
+ // 0, 1, 2 correspond to -O0, -O1, -O2, etc.
+ int optimizeLevel = 0;
+ // 0, 1, 2 correspond to -O0, -Os, -Oz
+ int shrinkLevel = 0;
+ // Optimize assuming things like div by 0, bad load/store, will not trap.
+ bool ignoreImplicitTraps = false;
+ // Optimize assuming that the low 1K of memory is not valid memory for the application
+ // to use. In that case, we can optimize load/store offsets in many cases.
+ bool lowMemoryUnused = false;
+ enum { LowMemoryBound = 1024 };
+ // Whether to try to preserve debug info through, which are special calls.
+ bool debugInfo = false;
+ // Which wasm features to accept, and be allowed to use.
+ FeatureSet features = FeatureSet::All;
void setDefaultOptimizationOptions() {
// -Os is our default
diff --git a/src/passes/CMakeLists.txt b/src/passes/CMakeLists.txt
index 0ad9dbf05..2848946f8 100644
--- a/src/passes/CMakeLists.txt
+++ b/src/passes/CMakeLists.txt
@@ -31,6 +31,7 @@ SET(passes_SOURCES
MinifyImportsAndExports.cpp
NameList.cpp
NoExitRuntime.cpp
+ OptimizeAddedConstants.cpp
OptimizeInstructions.cpp
PickLoadSigns.cpp
PostEmscripten.cpp
diff --git a/src/passes/CodePushing.cpp b/src/passes/CodePushing.cpp
index 931df140d..52aab08ad 100644
--- a/src/passes/CodePushing.cpp
+++ b/src/passes/CodePushing.cpp
@@ -77,8 +77,8 @@ struct LocalAnalyzer : public PostWalker<LocalAnalyzer> {
}
};
-// Implement core optimization logic in a struct, used and then discarded entirely
-// for each block
+// Implements core optimization logic. Used and then discarded entirely
+// for each block.
class Pusher {
ExpressionList& list;
LocalAnalyzer& analyzer;
@@ -92,7 +92,7 @@ public:
// continuing forward.
Index relevant = list.size() - 1; // we never need to push past a final element, as
// we couldn't be used after it.
- Index nothing = -1;
+ const Index nothing = -1;
Index i = 0;
Index firstPushable = nothing;
while (i < relevant) {
diff --git a/src/passes/OptimizeAddedConstants.cpp b/src/passes/OptimizeAddedConstants.cpp
new file mode 100644
index 000000000..119d61637
--- /dev/null
+++ b/src/passes/OptimizeAddedConstants.cpp
@@ -0,0 +1,239 @@
+/*
+ * Copyright 2019 WebAssembly Community Group participants
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+//
+// Optimize added constants into load/store offsets. This requires the assumption
+// that low memory is unused, so that we can replace an add (which might wrap)
+// with a load/store offset (which does not).
+//
+// The propagate option also propagates offsets across set/get local pairs.
+//
+// Optimizing constants into load/store offsets is almost always
+// beneficial for speed, as VMs can optimize these operations better.
+// If a LocalGraph is provided, this can also propagate values along get/set
+// pairs. In such a case, we may increase code size slightly or reduce
+// compressibility (e.g., replace (load (get $x)) with (load offset=Z (get $y)),
+// where Z is big enough to not fit in a single byte), but this is good for
+// speed, and may lead to code size reductions elsewhere by using fewer locals.
+//
+
+#include <wasm.h>
+#include <pass.h>
+#include <wasm-builder.h>
+#include <ir/local-graph.h>
+
+namespace wasm {
+
+template<typename T>
+class MemoryAccessOptimizer {
+public:
+ MemoryAccessOptimizer(T* curr, Module* module, LocalGraph* localGraph) : curr(curr), module(module), localGraph(localGraph) {
+ // The pointer itself may be a constant, if e.g. it was precomputed or
+ // a get that we propagated.
+ if (curr->ptr->template is<Const>()) {
+ optimizeConstantPointer();
+ return;
+ }
+ if (auto* add = curr->ptr->template dynCast<Binary>()) {
+ if (add->op == AddInt32) {
+ // Look for a constant on both sides.
+ if (tryToOptimizeConstant(add->right, add->left) ||
+ tryToOptimizeConstant(add->left, add->right)) {
+ return;
+ }
+ }
+ }
+ if (localGraph) {
+ // A final important case is a propagated add:
+ //
+ // x = y + 10
+ // ..
+ // load(x)
+ // =>
+ // x = y + 10
+ // ..
+ // load(y, offset=10)
+ //
+ // This is only valid if y does not change in the middle!
+ if (auto* get = curr->ptr->template dynCast<GetLocal>()) {
+ auto& sets = localGraph->getSetses[get];
+ if (sets.size() == 1) {
+ auto* set = *sets.begin();
+ // May be a zero-init (in which case, we can ignore it).
+ if (set) {
+ auto* value = set->value;
+ if (auto* add = value->template dynCast<Binary>()) {
+ if (add->op == AddInt32) {
+ // We can optimize on either side, but only if both we find
+ // a constant *and* the other side cannot change in the middle.
+ // TODO If it could change, we may add a new local to capture the
+ // old value.
+ if (tryToOptimizePropagatedAdd(add->right, add->left, get) ||
+ tryToOptimizePropagatedAdd(add->left, add->right, get)) {
+ return;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+
+private:
+ T* curr;
+ Module* module;
+ LocalGraph* localGraph;
+
+ void optimizeConstantPointer() {
+ // The constant and an offset are interchangeable:
+ // (load (const X)) <=> (load offset=X (const 0))
+ // It may not matter if we do this or not - it's the same size,
+ // and in both cases the compiler can see it's a constant location.
+ // For code clarity and compressibility, we prefer to put the
+ // entire address in the constant.
+ if (curr->offset) {
+ // Note that the offset may already be larger than low memory - the
+ // code may know that is valid, even if we can't. Only handle the
+ // obviously valid case where an overflow can't occur.
+ auto* c = curr->ptr->template cast<Const>();
+ uint32_t base = c->value.geti32();
+ uint32_t offset = curr->offset;
+ if (uint64_t(base) + uint64_t(offset) < (uint64_t(1) << 32)) {
+ c->value = c->value.add(Literal(uint32_t(curr->offset)));
+ curr->offset = 0;
+ }
+ }
+ }
+
+ struct Result {
+ bool succeeded;
+ Address total;
+ Result() : succeeded(false) {}
+ Result(Address total) : succeeded(true), total(total) {}
+ };
+
+ // See if we can optimize an offset from an expression. If we report
+ // success, the returned offset can be added as a replacement for the
+ // expression here.
+ bool tryToOptimizeConstant(Expression* oneSide, Expression* otherSide) {
+ if (auto* c = oneSide->template dynCast<Const>()) {
+ auto result = canOptimizeConstant(c->value);
+ if (result.succeeded) {
+ curr->offset = result.total;
+ curr->ptr = otherSide;
+ if (curr->ptr->template is<Const>()) {
+ optimizeConstantPointer();
+ }
+ return true;
+ }
+ }
+ return false;
+ }
+
+ bool tryToOptimizePropagatedAdd(Expression* oneSide, Expression* otherSide, GetLocal* ptr) {
+ if (auto* c = oneSide->template dynCast<Const>()) {
+ auto result = canOptimizeConstant(c->value);
+ if (result.succeeded) {
+ // Looks good, but we need to make sure the other side cannot change:
+ //
+ // x = y + 10
+ // y = y + 1
+ // load(x)
+ //
+ // This example should not be optimized into
+ //
+ // load(x, offset=10)
+ //
+ // If the other side is a get, we may be able to prove that we can just use that same
+ // local, if both it and the pointer are in SSA form. In that case,
+ //
+ // y = .. // single assignment that dominates all uses
+ // x = y + 10 // single assignment that dominates all uses
+ // [..]
+ // load(x) => load(y, offset=10)
+ //
+ // This is valid since dominance is transitive, so y's definition dominates the load,
+ // and it is ok to replace x with y + 10 there.
+ // TODO otherwise, create a new local
+ if (auto* get = otherSide->template dynCast<GetLocal>()) {
+ if (localGraph->isSSA(get->index) && localGraph->isSSA(ptr->index)) {
+ curr->offset = result.total;
+ curr->ptr = Builder(*module).makeGetLocal(get->index, get->type);
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ // Sees if we can optimize a particular constant.
+ Result canOptimizeConstant(Literal literal) {
+ auto value = literal.geti32();
+ // Avoid uninteresting corner cases with peculiar offsets.
+ if (value >= 0 && value < PassOptions::LowMemoryBound) {
+ // The total offset must not allow reaching reasonable memory
+ // by overflowing.
+ auto total = curr->offset + value;
+ if (total < PassOptions::LowMemoryBound) {
+ return Result(total);
+ }
+ }
+ return Result();
+ }
+};
+
+struct OptimizeAddedConstants : public WalkerPass<PostWalker<OptimizeAddedConstants, UnifiedExpressionVisitor<OptimizeAddedConstants>>> {
+ bool isFunctionParallel() override { return true; }
+
+ bool propagate;
+
+ OptimizeAddedConstants(bool propagate) : propagate(propagate) {}
+
+ Pass* create() override { return new OptimizeAddedConstants(propagate); }
+
+ std::unique_ptr<LocalGraph> localGraph;
+
+ void visitLoad(Load* curr) {
+ MemoryAccessOptimizer<Load>(curr, getModule(), localGraph.get());
+ }
+
+ void visitStore(Store* curr) {
+ MemoryAccessOptimizer<Store>(curr, getModule(), localGraph.get());
+ }
+
+ void doWalkFunction(Function* func) {
+ // This pass is only valid under the assumption of unused low memory.
+ assert(getPassOptions().lowMemoryUnused);
+ if (propagate) {
+ localGraph = make_unique<LocalGraph>(func);
+ localGraph->computeSSAIndexes();
+ }
+ super::doWalkFunction(func);
+ }
+};
+
+Pass *createOptimizeAddedConstantsPass() {
+ return new OptimizeAddedConstants(false);
+}
+
+Pass *createOptimizeAddedConstantsPropagatePass() {
+ return new OptimizeAddedConstants(true);
+}
+
+} // namespace wasm
+
diff --git a/src/passes/PickLoadSigns.cpp b/src/passes/PickLoadSigns.cpp
index 827346839..fce50b4bb 100644
--- a/src/passes/PickLoadSigns.cpp
+++ b/src/passes/PickLoadSigns.cpp
@@ -46,22 +46,8 @@ struct PickLoadSigns : public WalkerPass<ExpressionStackWalker<PickLoadSigns>> {
usages.resize(func->getNumLocals());
// walk
ExpressionStackWalker<PickLoadSigns>::doWalkFunction(func);
- // optimize based on the info we saw
- for (auto& pair : loads) {
- auto* load = pair.first;
- auto index = pair.second;
- auto& usage = usages[index];
- // if we can't optimize, give up
- if (usage.totalUsages == 0 || // no usages, so no idea
- usage.signedUsages + usage.unsignedUsages != usage.totalUsages || // non-sign/unsigned usages, so cannot change
- (usage.signedUsages != 0 && usage.signedBits != load->bytes * 8) || // sign usages exist but the wrong size
- (usage.unsignedUsages != 0 && usage.unsignedBits != load->bytes * 8)) { // unsigned usages exist but the wrong size
- continue;
- }
- // we can pick the optimal one. our hope is to remove 2 items per
- // signed use (two shifts), so we factor that in
- load->signed_ = usage.signedUsages * 2 >= usage.unsignedUsages;
- }
+ // optimize
+ optimize();
}
void visitGetLocal(GetLocal* curr) {
@@ -102,6 +88,26 @@ struct PickLoadSigns : public WalkerPass<ExpressionStackWalker<PickLoadSigns>> {
loads[load] = curr->index;
}
}
+
+ void optimize() {
+ // optimize based on the info we saw
+ for (auto& pair : loads) {
+ auto* load = pair.first;
+ auto index = pair.second;
+ auto& usage = usages[index];
+ // if we can't optimize, give up
+ if (usage.totalUsages == 0 || // no usages, so no idea
+ usage.signedUsages + usage.unsignedUsages != usage.totalUsages || // non-sign/unsigned usages, so cannot change
+ (usage.signedUsages != 0 && usage.signedBits != load->bytes * 8) || // sign usages exist but the wrong size
+ (usage.unsignedUsages != 0 && usage.unsignedBits != load->bytes * 8)) { // unsigned usages exist but the wrong size
+ continue;
+ }
+ // we can pick the optimal one. our hope is to remove 2 items per
+ // signed use (two shifts), so we factor that in
+ load->signed_ = usage.signedUsages * 2 >= usage.unsignedUsages;
+ }
+ }
+
};
Pass *createPickLoadSignsPass() {
diff --git a/src/passes/PostEmscripten.cpp b/src/passes/PostEmscripten.cpp
index 72c0d8808..7e2bacf25 100644
--- a/src/passes/PostEmscripten.cpp
+++ b/src/passes/PostEmscripten.cpp
@@ -32,66 +32,6 @@ struct PostEmscripten : public WalkerPass<PostWalker<PostEmscripten>> {
Pass* create() override { return new PostEmscripten; }
- // When we have a Load from a local value (typically a GetLocal) plus a constant offset,
- // we may be able to fold it in.
- // The semantics of the Add are to wrap, while wasm offset semantics purposefully do
- // not wrap. So this is not always safe to do. For example, a load may depend on
- // wrapping via
- // (2^32 - 10) + 100 => wrap and load from address 90
- // Without wrapping, we get something too large, and an error. *However*, for
- // asm2wasm output coming from Emscripten, we allocate the lowest 1024 for mapped
- // globals. Mapped globals are simple types (i32, float or double), always
- // accessed directly by a single constant. Therefore if we see (..) + K where
- // K is less then 1024, then if it wraps, it wraps into [0, 1024) which is at best
- // a mapped global, but it can't be because they are accessed directly (at worst,
- // it's 0 or an unused section of memory that was reserved for mapped globlas).
- // Thus it is ok to optimize such small constants into Load offsets.
-
- #define SAFE_MAX 1024
-
- void optimizeMemoryAccess(Expression*& ptr, Address& offset) {
- while (1) {
- auto* add = ptr->dynCast<Binary>();
- if (!add) break;
- if (add->op != AddInt32) break;
- auto* left = add->left->dynCast<Const>();
- auto* right = add->right->dynCast<Const>();
- // note: in optimized code, we shouldn't see an add of two constants, so don't worry about that much
- // (precompute would optimize that)
- if (left) {
- auto value = left->value.geti32();
- if (value >= 0 && value < SAFE_MAX) {
- offset = offset + value;
- ptr = add->right;
- continue;
- }
- }
- if (right) {
- auto value = right->value.geti32();
- if (value >= 0 && value < SAFE_MAX) {
- offset = offset + value;
- ptr = add->left;
- continue;
- }
- }
- break;
- }
- // finally ptr may be a const, but it isn't worth folding that in (we still have a const); in fact,
- // it's better to do the opposite for gzip purposes as well as for readability.
- auto* last = ptr->dynCast<Const>();
- if (last) {
- last->value = Literal(int32_t(last->value.geti32() + offset));
- offset = 0;
- }
- }
-
- void visitLoad(Load* curr) {
- optimizeMemoryAccess(curr->ptr, curr->offset);
- }
- void visitStore(Store* curr) {
- optimizeMemoryAccess(curr->ptr, curr->offset);
- }
-
void visitCall(Call* curr) {
// special asm.js imports can be optimized
auto* func = getModule()->getFunction(curr->target);
diff --git a/src/passes/Precompute.cpp b/src/passes/Precompute.cpp
index c23babda4..5e9d9c9ea 100644
--- a/src/passes/Precompute.cpp
+++ b/src/passes/Precompute.cpp
@@ -15,7 +15,11 @@
*/
//
-// Computes code at compile time where possible.
+// Computes code at compile time where possible, replacing it with the
+// computed constant.
+//
+// The "propagate" variant of this pass also propagates constants across
+// sets and gets, which implements a standard constant propagation.
//
// Possible nondeterminism: WebAssembly NaN signs are nondeterministic,
// and this pass may optimize e.g. a float 0 / 0 into +nan while a VM may
@@ -267,6 +271,7 @@ private:
// compute all dependencies
LocalGraph localGraph(func);
localGraph.computeInfluences();
+ localGraph.computeSSAIndexes();
// prepare the work list. we add things here that might change to a constant
// initially, that means everything
std::unordered_set<Expression*> work;
diff --git a/src/passes/SafeHeap.cpp b/src/passes/SafeHeap.cpp
index f170041e1..3cc1021ed 100644
--- a/src/passes/SafeHeap.cpp
+++ b/src/passes/SafeHeap.cpp
@@ -100,7 +100,10 @@ struct AccessInstrumenter : public WalkerPass<PostWalker<AccessInstrumenter>> {
};
struct SafeHeap : public Pass {
+ PassOptions options;
+
void run(PassRunner* runner, Module* module) override {
+ options = runner->options;
// add imports
addImports(module);
// instrument loads and stores
@@ -314,13 +317,15 @@ struct SafeHeap : public Pass {
}
Expression* makeBoundsCheck(Type type, Builder& builder, Index local, Index bytes) {
+ auto upperOp = options.lowMemoryUnused ? LtUInt32 : EqInt32;
+ auto upperBound = options.lowMemoryUnused ? PassOptions::LowMemoryBound : 0;
return builder.makeIf(
builder.makeBinary(
OrInt32,
builder.makeBinary(
- EqInt32,
+ upperOp,
builder.makeGetLocal(local, i32),
- builder.makeConst(Literal(int32_t(0)))
+ builder.makeConst(Literal(int32_t(upperBound)))
),
builder.makeBinary(
GtUInt32,
diff --git a/src/passes/pass.cpp b/src/passes/pass.cpp
index 58a5f2f0a..3712bf19e 100644
--- a/src/passes/pass.cpp
+++ b/src/passes/pass.cpp
@@ -100,6 +100,8 @@ void PassRegistry::registerPasses() {
registerPass("minify-imports-and-exports", "minifies both import and export names, and emits a mapping to the minified ones", createMinifyImportsAndExportsPass);
registerPass("nm", "name list", createNameListPass);
registerPass("no-exit-runtime", "removes calls to atexit(), which is valid if the C runtime will never be exited", createNoExitRuntimePass);
+ registerPass("optimize-added-constants", "optimizes added constants into load/store offsets", createOptimizeAddedConstantsPass);
+ registerPass("optimize-added-constants-propagate", "optimizes added constants into load/store offsets, propagating them across locals too", createOptimizeAddedConstantsPropagatePass);
registerPass("optimize-instructions", "optimizes instruction combinations", createOptimizeInstructionsPass);
registerPass("optimize-stack-ir", "optimize Stack IR", createOptimizeStackIRPass);
registerPass("pick-load-signs", "pick load signs based on their uses", createPickLoadSignsPass);
@@ -169,6 +171,13 @@ void PassRunner::addDefaultFunctionOptimizationPasses() {
} else {
add("precompute");
}
+ if (options.lowMemoryUnused) {
+ if (options.optimizeLevel >= 3 || options.shrinkLevel >= 1) {
+ add("optimize-added-constants-propagate");
+ } else {
+ add("optimize-added-constants");
+ }
+ }
if (options.optimizeLevel >= 2 || options.shrinkLevel >= 2) {
add("code-pushing");
}
diff --git a/src/passes/passes.h b/src/passes/passes.h
index 15493f313..ab11721fb 100644
--- a/src/passes/passes.h
+++ b/src/passes/passes.h
@@ -57,6 +57,8 @@ Pass* createMinifyImportsAndExportsPass();
Pass* createMetricsPass();
Pass* createNameListPass();
Pass* createNoExitRuntimePass();
+Pass* createOptimizeAddedConstantsPass();
+Pass* createOptimizeAddedConstantsPropagatePass();
Pass* createOptimizeInstructionsPass();
Pass* createOptimizeStackIRPass();
Pass* createPickLoadSignsPass();
diff --git a/src/tools/optimization-options.h b/src/tools/optimization-options.h
index 53fd60e4d..4b8bfc139 100644
--- a/src/tools/optimization-options.h
+++ b/src/tools/optimization-options.h
@@ -96,6 +96,11 @@ struct OptimizationOptions : public ToolOptions {
Options::Arguments::Zero,
[this](Options*, const std::string&) {
passOptions.ignoreImplicitTraps = true;
+ })
+ .add("--low-memory-unused", "-lmu", "Optimize under the helpful assumption that the low 1K of memory is not used by the application",
+ Options::Arguments::Zero,
+ [this](Options*, const std::string&) {
+ passOptions.lowMemoryUnused = true;
});
// add passes in registry
for (const auto& p : PassRegistry::get()->getRegisteredNames()) {
diff --git a/src/wasm.h b/src/wasm.h
index a1761a430..a16dab478 100644
--- a/src/wasm.h
+++ b/src/wasm.h
@@ -98,12 +98,6 @@ struct Address {
Address& operator++() { ++addr; return *this; }
};
-// An offset into memory
-typedef int32_t Offset;
-
-// Types
-
-
// Operators
enum UnaryOp {
diff --git a/src/wasm/wasm-s-parser.cpp b/src/wasm/wasm-s-parser.cpp
index d7b3824a9..7fd4679b1 100644
--- a/src/wasm/wasm-s-parser.cpp
+++ b/src/wasm/wasm-s-parser.cpp
@@ -966,10 +966,10 @@ static size_t parseMemAttributes(Element& s, Address* offset, Address* align, Ad
throw ParseException("bad memory attribute immediate", s.line, s.col);
}
if (str[0] == 'a') {
- if (value > std::numeric_limits<uint32_t>::max()) throw ParseException("bad align");
+ if (value > std::numeric_limits<uint32_t>::max()) throw ParseException("bad align", s.line, s.col);
*align = value;
} else if (str[0] == 'o') {
- if (value > std::numeric_limits<uint32_t>::max()) throw ParseException("bad offset");
+ if (value > std::numeric_limits<uint32_t>::max()) throw ParseException("bad offset", s.line, s.col);
*offset = value;
} else throw ParseException("bad memory attribute");
i++;
diff --git a/test/emcc_O2_hello_world.fromasm b/test/emcc_O2_hello_world.fromasm
index 7ea5ff8d6..b62a74e88 100644
--- a/test/emcc_O2_hello_world.fromasm
+++ b/test/emcc_O2_hello_world.fromasm
@@ -7641,9 +7641,7 @@
(local $13 i32)
(local $14 i32)
(local $15 i32)
- (local $16 i32)
- (local $17 i32)
- (local.set $12
+ (local.set $7
(global.get $STACKTOP)
)
(global.set $STACKTOP
@@ -7652,29 +7650,25 @@
(i32.const 48)
)
)
- (local.set $9
+ (local.set $11
(i32.add
- (local.get $12)
+ (local.get $7)
(i32.const 16)
)
)
+ (local.set $9
+ (local.get $7)
+ )
(i32.store
(local.tee $3
(i32.add
- (local.tee $10
- (local.get $12)
- )
+ (local.get $7)
(i32.const 32)
)
)
- (local.tee $11
- (i32.load
- (local.tee $7
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
+ (local.tee $10
+ (i32.load offset=28
+ (local.get $0)
)
)
)
@@ -7682,15 +7676,10 @@
(local.get $3)
(local.tee $8
(i32.sub
- (i32.load
- (local.tee $13
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
- (local.get $11)
+ (local.get $10)
)
)
)
@@ -7708,7 +7697,7 @@
(i32.const 60)
)
)
- (local.set $11
+ (local.set $10
(i32.add
(local.get $0)
(i32.const 44)
@@ -7742,24 +7731,24 @@
(local.get $0)
)
(i32.store
- (local.get $10)
+ (local.get $9)
(i32.load
(local.get $1)
)
)
(i32.store offset=4
- (local.get $10)
+ (local.get $9)
(local.get $5)
)
(i32.store offset=8
- (local.get $10)
+ (local.get $9)
(local.get $3)
)
(local.set $8
(call $___syscall_ret
(call $___syscall146
(i32.const 146)
- (local.get $10)
+ (local.get $9)
)
)
)
@@ -7769,24 +7758,24 @@
(local.get $8)
)
(block (result i32)
- (i32.store
- (local.get $9)
+ (i32.store offset=16
+ (local.get $7)
(i32.load
(local.get $1)
)
)
(i32.store offset=4
- (local.get $9)
+ (local.get $11)
(local.get $5)
)
(i32.store offset=8
- (local.get $9)
+ (local.get $11)
(local.get $3)
)
(call $___syscall_ret
(call $___syscall146
(i32.const 146)
- (local.get $9)
+ (local.get $11)
)
)
)
@@ -7806,10 +7795,10 @@
(i32.const 0)
)
(block
- (local.set $16
+ (local.set $14
(local.get $5)
)
- (local.set $17
+ (local.set $15
(local.get $3)
)
(local.set $1
@@ -7827,7 +7816,7 @@
(if
(i32.le_u
(local.get $6)
- (local.tee $14
+ (local.tee $12
(i32.load offset=4
(local.get $5)
)
@@ -7840,12 +7829,12 @@
(i32.const 2)
)
(block
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(i32.add
(local.get $6)
- (i32.load
- (local.get $7)
+ (i32.load offset=28
+ (local.get $0)
)
)
)
@@ -7855,20 +7844,20 @@
)
)
(local.set $4
- (local.get $14)
+ (local.get $12)
)
)
(block
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(local.tee $4
(i32.load
- (local.get $11)
+ (local.get $10)
)
)
)
- (i32.store
- (local.get $13)
+ (i32.store offset=20
+ (local.get $0)
(local.get $4)
)
(local.set $4
@@ -7879,7 +7868,7 @@
(local.set $6
(i32.sub
(local.get $6)
- (local.get $14)
+ (local.get $12)
)
)
(local.set $5
@@ -7918,7 +7907,7 @@
(br $while-in)
)
)
- (local.set $15
+ (local.set $13
(if (result i32)
(i32.eq
(local.get $1)
@@ -7930,7 +7919,7 @@
(i32.add
(local.tee $4
(i32.load
- (local.get $11)
+ (local.get $10)
)
)
(i32.load offset=48
@@ -7938,12 +7927,12 @@
)
)
)
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(local.get $4)
)
- (i32.store
- (local.get $13)
+ (i32.store offset=20
+ (local.get $0)
(local.get $4)
)
(local.get $2)
@@ -7958,12 +7947,12 @@
(local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $13)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
(i32.store
@@ -7977,26 +7966,26 @@
)
(if (result i32)
(i32.eq
- (local.get $17)
+ (local.get $15)
(i32.const 2)
)
(i32.const 0)
(i32.sub
(local.get $2)
(i32.load offset=4
- (local.get $16)
+ (local.get $14)
)
)
)
)
- (local.get $15)
+ (local.get $13)
)
)
)
(global.set $STACKTOP
- (local.get $12)
+ (local.get $7)
)
- (local.get $15)
+ (local.get $13)
)
(func $___fwritex (; 18 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
@@ -8109,15 +8098,12 @@
)
(if
(i32.ne
- (i32.load8_s
- (i32.add
- (local.tee $5
- (i32.add
- (local.get $2)
- (i32.const -1)
- )
+ (i32.load8_s offset=672
+ (local.tee $5
+ (i32.add
+ (local.get $2)
+ (i32.const -1)
)
- (i32.const 672)
)
)
(i32.const 10)
@@ -8538,28 +8524,14 @@
(func $___fflush_unlocked (; 22 ;) (; has Stack IR ;) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
- (local $3 i32)
- (local $4 i32)
- (local $5 i32)
- (local $6 i32)
(if (result i32)
(if (result i32)
(i32.gt_u
- (i32.load
- (local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
+ (i32.load offset=28
+ (local.get $0)
)
)
(block (result i32)
@@ -8580,8 +8552,8 @@
)
)
(i32.eqz
- (i32.load
- (local.get $1)
+ (i32.load offset=20
+ (local.get $0)
)
)
)
@@ -8591,24 +8563,14 @@
(block (result i32)
(if
(i32.lt_u
- (local.tee $4
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $0)
- (i32.const 4)
- )
- )
+ (local.tee $1
+ (i32.load offset=4
+ (local.get $0)
)
)
- (local.tee $6
- (i32.load
- (local.tee $5
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
+ (local.tee $2
+ (i32.load offset=8
+ (local.get $0)
)
)
)
@@ -8616,8 +8578,8 @@
(call_indirect (type $FUNCSIG$iiii)
(local.get $0)
(i32.sub
- (local.get $4)
- (local.get $6)
+ (local.get $1)
+ (local.get $2)
)
(i32.const 1)
(i32.add
@@ -8636,20 +8598,20 @@
(local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $2)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $1)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $5)
+ (i32.store offset=8
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $3)
+ (i32.store offset=4
+ (local.get $0)
(i32.const 0)
)
(i32.const 0)
@@ -9022,8 +8984,7 @@
)
(func $___stdio_seek (; 27 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
- (local $4 i32)
- (local.set $4
+ (local.set $3
(global.get $STACKTOP)
)
(global.set $STACKTOP
@@ -9033,9 +8994,7 @@
)
)
(i32.store
- (local.tee $3
- (local.get $4)
- )
+ (local.get $3)
(i32.load offset=60
(local.get $0)
)
@@ -9050,11 +9009,9 @@
)
(i32.store offset=12
(local.get $3)
- (local.tee $0
- (i32.add
- (local.get $3)
- (i32.const 20)
- )
+ (i32.add
+ (local.get $3)
+ (i32.const 20)
)
)
(i32.store offset=16
@@ -9073,19 +9030,19 @@
(i32.const 0)
)
(block (result i32)
- (i32.store
- (local.get $0)
+ (i32.store offset=20
+ (local.get $3)
(i32.const -1)
)
(i32.const -1)
)
- (i32.load
- (local.get $0)
+ (i32.load offset=20
+ (local.get $3)
)
)
)
(global.set $STACKTOP
- (local.get $4)
+ (local.get $3)
)
(local.get $0)
)
diff --git a/test/emcc_O2_hello_world.fromasm.clamp b/test/emcc_O2_hello_world.fromasm.clamp
index 7ea5ff8d6..b62a74e88 100644
--- a/test/emcc_O2_hello_world.fromasm.clamp
+++ b/test/emcc_O2_hello_world.fromasm.clamp
@@ -7641,9 +7641,7 @@
(local $13 i32)
(local $14 i32)
(local $15 i32)
- (local $16 i32)
- (local $17 i32)
- (local.set $12
+ (local.set $7
(global.get $STACKTOP)
)
(global.set $STACKTOP
@@ -7652,29 +7650,25 @@
(i32.const 48)
)
)
- (local.set $9
+ (local.set $11
(i32.add
- (local.get $12)
+ (local.get $7)
(i32.const 16)
)
)
+ (local.set $9
+ (local.get $7)
+ )
(i32.store
(local.tee $3
(i32.add
- (local.tee $10
- (local.get $12)
- )
+ (local.get $7)
(i32.const 32)
)
)
- (local.tee $11
- (i32.load
- (local.tee $7
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
+ (local.tee $10
+ (i32.load offset=28
+ (local.get $0)
)
)
)
@@ -7682,15 +7676,10 @@
(local.get $3)
(local.tee $8
(i32.sub
- (i32.load
- (local.tee $13
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
- (local.get $11)
+ (local.get $10)
)
)
)
@@ -7708,7 +7697,7 @@
(i32.const 60)
)
)
- (local.set $11
+ (local.set $10
(i32.add
(local.get $0)
(i32.const 44)
@@ -7742,24 +7731,24 @@
(local.get $0)
)
(i32.store
- (local.get $10)
+ (local.get $9)
(i32.load
(local.get $1)
)
)
(i32.store offset=4
- (local.get $10)
+ (local.get $9)
(local.get $5)
)
(i32.store offset=8
- (local.get $10)
+ (local.get $9)
(local.get $3)
)
(local.set $8
(call $___syscall_ret
(call $___syscall146
(i32.const 146)
- (local.get $10)
+ (local.get $9)
)
)
)
@@ -7769,24 +7758,24 @@
(local.get $8)
)
(block (result i32)
- (i32.store
- (local.get $9)
+ (i32.store offset=16
+ (local.get $7)
(i32.load
(local.get $1)
)
)
(i32.store offset=4
- (local.get $9)
+ (local.get $11)
(local.get $5)
)
(i32.store offset=8
- (local.get $9)
+ (local.get $11)
(local.get $3)
)
(call $___syscall_ret
(call $___syscall146
(i32.const 146)
- (local.get $9)
+ (local.get $11)
)
)
)
@@ -7806,10 +7795,10 @@
(i32.const 0)
)
(block
- (local.set $16
+ (local.set $14
(local.get $5)
)
- (local.set $17
+ (local.set $15
(local.get $3)
)
(local.set $1
@@ -7827,7 +7816,7 @@
(if
(i32.le_u
(local.get $6)
- (local.tee $14
+ (local.tee $12
(i32.load offset=4
(local.get $5)
)
@@ -7840,12 +7829,12 @@
(i32.const 2)
)
(block
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(i32.add
(local.get $6)
- (i32.load
- (local.get $7)
+ (i32.load offset=28
+ (local.get $0)
)
)
)
@@ -7855,20 +7844,20 @@
)
)
(local.set $4
- (local.get $14)
+ (local.get $12)
)
)
(block
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(local.tee $4
(i32.load
- (local.get $11)
+ (local.get $10)
)
)
)
- (i32.store
- (local.get $13)
+ (i32.store offset=20
+ (local.get $0)
(local.get $4)
)
(local.set $4
@@ -7879,7 +7868,7 @@
(local.set $6
(i32.sub
(local.get $6)
- (local.get $14)
+ (local.get $12)
)
)
(local.set $5
@@ -7918,7 +7907,7 @@
(br $while-in)
)
)
- (local.set $15
+ (local.set $13
(if (result i32)
(i32.eq
(local.get $1)
@@ -7930,7 +7919,7 @@
(i32.add
(local.tee $4
(i32.load
- (local.get $11)
+ (local.get $10)
)
)
(i32.load offset=48
@@ -7938,12 +7927,12 @@
)
)
)
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(local.get $4)
)
- (i32.store
- (local.get $13)
+ (i32.store offset=20
+ (local.get $0)
(local.get $4)
)
(local.get $2)
@@ -7958,12 +7947,12 @@
(local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $13)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
(i32.store
@@ -7977,26 +7966,26 @@
)
(if (result i32)
(i32.eq
- (local.get $17)
+ (local.get $15)
(i32.const 2)
)
(i32.const 0)
(i32.sub
(local.get $2)
(i32.load offset=4
- (local.get $16)
+ (local.get $14)
)
)
)
)
- (local.get $15)
+ (local.get $13)
)
)
)
(global.set $STACKTOP
- (local.get $12)
+ (local.get $7)
)
- (local.get $15)
+ (local.get $13)
)
(func $___fwritex (; 18 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
@@ -8109,15 +8098,12 @@
)
(if
(i32.ne
- (i32.load8_s
- (i32.add
- (local.tee $5
- (i32.add
- (local.get $2)
- (i32.const -1)
- )
+ (i32.load8_s offset=672
+ (local.tee $5
+ (i32.add
+ (local.get $2)
+ (i32.const -1)
)
- (i32.const 672)
)
)
(i32.const 10)
@@ -8538,28 +8524,14 @@
(func $___fflush_unlocked (; 22 ;) (; has Stack IR ;) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
- (local $3 i32)
- (local $4 i32)
- (local $5 i32)
- (local $6 i32)
(if (result i32)
(if (result i32)
(i32.gt_u
- (i32.load
- (local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
+ (i32.load offset=28
+ (local.get $0)
)
)
(block (result i32)
@@ -8580,8 +8552,8 @@
)
)
(i32.eqz
- (i32.load
- (local.get $1)
+ (i32.load offset=20
+ (local.get $0)
)
)
)
@@ -8591,24 +8563,14 @@
(block (result i32)
(if
(i32.lt_u
- (local.tee $4
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $0)
- (i32.const 4)
- )
- )
+ (local.tee $1
+ (i32.load offset=4
+ (local.get $0)
)
)
- (local.tee $6
- (i32.load
- (local.tee $5
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
+ (local.tee $2
+ (i32.load offset=8
+ (local.get $0)
)
)
)
@@ -8616,8 +8578,8 @@
(call_indirect (type $FUNCSIG$iiii)
(local.get $0)
(i32.sub
- (local.get $4)
- (local.get $6)
+ (local.get $1)
+ (local.get $2)
)
(i32.const 1)
(i32.add
@@ -8636,20 +8598,20 @@
(local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $2)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $1)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $5)
+ (i32.store offset=8
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $3)
+ (i32.store offset=4
+ (local.get $0)
(i32.const 0)
)
(i32.const 0)
@@ -9022,8 +8984,7 @@
)
(func $___stdio_seek (; 27 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
- (local $4 i32)
- (local.set $4
+ (local.set $3
(global.get $STACKTOP)
)
(global.set $STACKTOP
@@ -9033,9 +8994,7 @@
)
)
(i32.store
- (local.tee $3
- (local.get $4)
- )
+ (local.get $3)
(i32.load offset=60
(local.get $0)
)
@@ -9050,11 +9009,9 @@
)
(i32.store offset=12
(local.get $3)
- (local.tee $0
- (i32.add
- (local.get $3)
- (i32.const 20)
- )
+ (i32.add
+ (local.get $3)
+ (i32.const 20)
)
)
(i32.store offset=16
@@ -9073,19 +9030,19 @@
(i32.const 0)
)
(block (result i32)
- (i32.store
- (local.get $0)
+ (i32.store offset=20
+ (local.get $3)
(i32.const -1)
)
(i32.const -1)
)
- (i32.load
- (local.get $0)
+ (i32.load offset=20
+ (local.get $3)
)
)
)
(global.set $STACKTOP
- (local.get $4)
+ (local.get $3)
)
(local.get $0)
)
diff --git a/test/emcc_O2_hello_world.fromasm.imprecise b/test/emcc_O2_hello_world.fromasm.imprecise
index c493e11b2..5be7015b2 100644
--- a/test/emcc_O2_hello_world.fromasm.imprecise
+++ b/test/emcc_O2_hello_world.fromasm.imprecise
@@ -7642,9 +7642,7 @@
(local $13 i32)
(local $14 i32)
(local $15 i32)
- (local $16 i32)
- (local $17 i32)
- (local.set $12
+ (local.set $7
(global.get $STACKTOP)
)
(global.set $STACKTOP
@@ -7653,29 +7651,25 @@
(i32.const 48)
)
)
- (local.set $9
+ (local.set $11
(i32.add
- (local.get $12)
+ (local.get $7)
(i32.const 16)
)
)
+ (local.set $9
+ (local.get $7)
+ )
(i32.store
(local.tee $3
(i32.add
- (local.tee $10
- (local.get $12)
- )
+ (local.get $7)
(i32.const 32)
)
)
- (local.tee $11
- (i32.load
- (local.tee $7
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
+ (local.tee $10
+ (i32.load offset=28
+ (local.get $0)
)
)
)
@@ -7683,15 +7677,10 @@
(local.get $3)
(local.tee $8
(i32.sub
- (i32.load
- (local.tee $13
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
- (local.get $11)
+ (local.get $10)
)
)
)
@@ -7709,7 +7698,7 @@
(i32.const 60)
)
)
- (local.set $11
+ (local.set $10
(i32.add
(local.get $0)
(i32.const 44)
@@ -7743,24 +7732,24 @@
(local.get $0)
)
(i32.store
- (local.get $10)
+ (local.get $9)
(i32.load
(local.get $1)
)
)
(i32.store offset=4
- (local.get $10)
+ (local.get $9)
(local.get $5)
)
(i32.store offset=8
- (local.get $10)
+ (local.get $9)
(local.get $3)
)
(local.set $8
(call $___syscall_ret
(call $___syscall146
(i32.const 146)
- (local.get $10)
+ (local.get $9)
)
)
)
@@ -7770,24 +7759,24 @@
(local.get $8)
)
(block (result i32)
- (i32.store
- (local.get $9)
+ (i32.store offset=16
+ (local.get $7)
(i32.load
(local.get $1)
)
)
(i32.store offset=4
- (local.get $9)
+ (local.get $11)
(local.get $5)
)
(i32.store offset=8
- (local.get $9)
+ (local.get $11)
(local.get $3)
)
(call $___syscall_ret
(call $___syscall146
(i32.const 146)
- (local.get $9)
+ (local.get $11)
)
)
)
@@ -7807,10 +7796,10 @@
(i32.const 0)
)
(block
- (local.set $15
+ (local.set $13
(local.get $5)
)
- (local.set $16
+ (local.set $14
(local.get $3)
)
(local.set $1
@@ -7828,7 +7817,7 @@
(if
(i32.le_u
(local.get $6)
- (local.tee $14
+ (local.tee $12
(i32.load offset=4
(local.get $5)
)
@@ -7841,12 +7830,12 @@
(i32.const 2)
)
(block
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(i32.add
(local.get $6)
- (i32.load
- (local.get $7)
+ (i32.load offset=28
+ (local.get $0)
)
)
)
@@ -7856,20 +7845,20 @@
)
)
(local.set $4
- (local.get $14)
+ (local.get $12)
)
)
(block
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(local.tee $4
(i32.load
- (local.get $11)
+ (local.get $10)
)
)
)
- (i32.store
- (local.get $13)
+ (i32.store offset=20
+ (local.get $0)
(local.get $4)
)
(local.set $4
@@ -7880,7 +7869,7 @@
(local.set $6
(i32.sub
(local.get $6)
- (local.get $14)
+ (local.get $12)
)
)
(local.set $5
@@ -7920,7 +7909,7 @@
)
)
(global.set $STACKTOP
- (local.get $12)
+ (local.get $7)
)
(if (result i32)
(i32.eq
@@ -7933,7 +7922,7 @@
(i32.add
(local.tee $4
(i32.load
- (local.get $11)
+ (local.get $10)
)
)
(i32.load offset=48
@@ -7941,12 +7930,12 @@
)
)
)
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(local.get $4)
)
- (i32.store
- (local.get $13)
+ (i32.store offset=20
+ (local.get $0)
(local.get $4)
)
(local.get $2)
@@ -7961,12 +7950,12 @@
(local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $13)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
(i32.store
@@ -7983,16 +7972,16 @@
(i32.sub
(local.get $2)
(i32.load offset=4
- (local.get $15)
+ (local.get $13)
)
)
(i32.eq
- (local.get $16)
+ (local.get $14)
(i32.const 2)
)
)
)
- (local.get $17)
+ (local.get $15)
)
)
)
@@ -8107,15 +8096,12 @@
)
(if
(i32.ne
- (i32.load8_s
- (i32.add
- (local.tee $5
- (i32.add
- (local.get $2)
- (i32.const -1)
- )
+ (i32.load8_s offset=672
+ (local.tee $5
+ (i32.add
+ (local.get $2)
+ (i32.const -1)
)
- (i32.const 672)
)
)
(i32.const 10)
@@ -8531,28 +8517,14 @@
(func $___fflush_unlocked (; 22 ;) (; has Stack IR ;) (param $0 i32) (result i32)
(local $1 i32)
(local $2 i32)
- (local $3 i32)
- (local $4 i32)
- (local $5 i32)
- (local $6 i32)
(if (result i32)
(if (result i32)
(i32.gt_u
- (i32.load
- (local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
+ (i32.load offset=28
+ (local.get $0)
)
)
(block (result i32)
@@ -8573,8 +8545,8 @@
)
)
(i32.eqz
- (i32.load
- (local.get $1)
+ (i32.load offset=20
+ (local.get $0)
)
)
)
@@ -8584,24 +8556,14 @@
(block (result i32)
(if
(i32.lt_u
- (local.tee $4
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $0)
- (i32.const 4)
- )
- )
+ (local.tee $1
+ (i32.load offset=4
+ (local.get $0)
)
)
- (local.tee $6
- (i32.load
- (local.tee $5
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
+ (local.tee $2
+ (i32.load offset=8
+ (local.get $0)
)
)
)
@@ -8609,8 +8571,8 @@
(call_indirect (type $FUNCSIG$iiii)
(local.get $0)
(i32.sub
- (local.get $4)
- (local.get $6)
+ (local.get $1)
+ (local.get $2)
)
(i32.const 1)
(i32.add
@@ -8629,20 +8591,20 @@
(local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $2)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $1)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $5)
+ (i32.store offset=8
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $3)
+ (i32.store offset=4
+ (local.get $0)
(i32.const 0)
)
(i32.const 0)
@@ -9034,8 +8996,7 @@
)
(func $___stdio_seek (; 27 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
- (local $4 i32)
- (local.set $4
+ (local.set $3
(global.get $STACKTOP)
)
(global.set $STACKTOP
@@ -9045,9 +9006,7 @@
)
)
(i32.store
- (local.tee $3
- (local.get $4)
- )
+ (local.get $3)
(i32.load offset=60
(local.get $0)
)
@@ -9062,11 +9021,9 @@
)
(i32.store offset=12
(local.get $3)
- (local.tee $0
- (i32.add
- (local.get $3)
- (i32.const 20)
- )
+ (i32.add
+ (local.get $3)
+ (i32.const 20)
)
)
(i32.store offset=16
@@ -9085,19 +9042,19 @@
(i32.const 0)
)
(block (result i32)
- (i32.store
- (local.get $0)
+ (i32.store offset=20
+ (local.get $3)
(i32.const -1)
)
(i32.const -1)
)
- (i32.load
- (local.get $0)
+ (i32.load offset=20
+ (local.get $3)
)
)
)
(global.set $STACKTOP
- (local.get $4)
+ (local.get $3)
)
(local.get $0)
)
diff --git a/test/emcc_hello_world.fromasm b/test/emcc_hello_world.fromasm
index 16adc1457..917f9589f 100644
--- a/test/emcc_hello_world.fromasm
+++ b/test/emcc_hello_world.fromasm
@@ -264,8 +264,11 @@
(loop $while-in
(if
(i32.ne
- (i32.load8_u offset=687
- (local.get $1)
+ (i32.load8_u
+ (i32.add
+ (local.get $1)
+ (i32.const 687)
+ )
)
(local.get $0)
)
@@ -499,11 +502,9 @@
)
(i32.store offset=12
(local.get $3)
- (local.tee $0
- (i32.add
- (local.get $3)
- (i32.const 20)
- )
+ (i32.add
+ (local.get $3)
+ (i32.const 20)
)
)
(i32.store offset=16
@@ -522,14 +523,14 @@
(i32.const 0)
)
(block (result i32)
- (i32.store
- (local.get $0)
+ (i32.store offset=20
+ (local.get $4)
(i32.const -1)
)
(i32.const -1)
)
- (i32.load
- (local.get $0)
+ (i32.load offset=20
+ (local.get $4)
)
)
)
@@ -666,11 +667,7 @@
(local $8 i32)
(local $9 i32)
(local $10 i32)
- (local $11 i32)
- (local $12 i32)
- (local $13 i32)
- (local $14 i32)
- (local.set $10
+ (local.set $8
(global.get $STACKTOP)
)
(global.set $STACKTOP
@@ -686,43 +683,33 @@
)
(call $abort)
)
- (local.set $8
+ (local.set $9
(i32.add
- (local.get $10)
+ (local.get $8)
(i32.const 16)
)
)
- (i32.store
- (local.tee $4
- (i32.add
- (local.tee $9
- (local.get $10)
- )
- (i32.const 32)
- )
+ (i32.store offset=32
+ (local.tee $6
+ (local.get $8)
)
(local.tee $3
- (i32.load
- (local.tee $6
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
+ (i32.load offset=28
+ (local.get $0)
)
)
)
(i32.store offset=4
- (local.get $4)
+ (local.tee $4
+ (i32.add
+ (local.get $6)
+ (i32.const 32)
+ )
+ )
(local.tee $3
(i32.sub
- (i32.load
- (local.tee $11
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
(local.get $3)
)
@@ -736,25 +723,13 @@
(local.get $4)
(local.get $2)
)
- (local.set $13
- (i32.add
- (local.get $0)
- (i32.const 60)
- )
- )
- (local.set $14
- (i32.add
- (local.get $0)
- (i32.const 44)
- )
- )
(local.set $1
(local.get $4)
)
(local.set $4
(i32.const 2)
)
- (local.set $12
+ (local.set $10
(i32.add
(local.get $2)
(local.get $3)
@@ -774,24 +749,24 @@
(local.get $0)
)
(i32.store
- (local.get $9)
- (i32.load
- (local.get $13)
+ (local.get $6)
+ (i32.load offset=60
+ (local.get $0)
)
)
(i32.store offset=4
- (local.get $9)
+ (local.get $6)
(local.get $1)
)
(i32.store offset=8
- (local.get $9)
+ (local.get $6)
(local.get $4)
)
(local.set $3
(call $___syscall_ret
(call $___syscall146
(i32.const 146)
- (local.get $9)
+ (local.get $6)
)
)
)
@@ -800,25 +775,25 @@
)
)
(block
- (i32.store
+ (i32.store offset=16
(local.get $8)
- (i32.load
- (local.get $13)
+ (i32.load offset=60
+ (local.get $0)
)
)
(i32.store offset=4
- (local.get $8)
+ (local.get $9)
(local.get $1)
)
(i32.store offset=8
- (local.get $8)
+ (local.get $9)
(local.get $4)
)
(local.set $3
(call $___syscall_ret
(call $___syscall146
(i32.const 146)
- (local.get $8)
+ (local.get $9)
)
)
)
@@ -827,7 +802,7 @@
(br_if $__rjti$0
(i32.eq
(local.get $3)
- (local.get $12)
+ (local.get $10)
)
)
(br_if $__rjti$1
@@ -841,27 +816,33 @@
(i32.gt_u
(local.get $3)
(local.tee $5
- (i32.load offset=4
- (local.get $1)
+ (i32.load
+ (i32.add
+ (local.get $1)
+ (i32.const 4)
+ )
)
)
)
(block (result i32)
- (i32.store
- (local.get $6)
+ (i32.store offset=28
+ (local.get $0)
(local.tee $7
- (i32.load
- (local.get $14)
+ (i32.load offset=44
+ (local.get $0)
)
)
)
- (i32.store
- (local.get $11)
+ (i32.store offset=20
+ (local.get $0)
(local.get $7)
)
(local.set $7
- (i32.load offset=12
- (local.get $1)
+ (i32.load
+ (i32.add
+ (local.get $1)
+ (i32.const 12)
+ )
)
)
(local.set $1
@@ -888,11 +869,11 @@
(i32.const 2)
)
(block
- (i32.store
- (local.get $6)
+ (i32.store offset=28
+ (local.get $0)
(i32.add
- (i32.load
- (local.get $6)
+ (i32.load offset=28
+ (local.get $0)
)
(local.get $3)
)
@@ -921,16 +902,19 @@
(local.get $5)
)
)
- (i32.store offset=4
- (local.get $1)
+ (i32.store
+ (i32.add
+ (local.get $1)
+ (i32.const 4)
+ )
(i32.sub
(local.get $7)
(local.get $5)
)
)
- (local.set $12
+ (local.set $10
(i32.sub
- (local.get $12)
+ (local.get $10)
(local.get $3)
)
)
@@ -941,8 +925,8 @@
(local.get $0)
(i32.add
(local.tee $1
- (i32.load
- (local.get $14)
+ (i32.load offset=44
+ (local.get $0)
)
)
(i32.load offset=48
@@ -950,12 +934,12 @@
)
)
)
- (i32.store
- (local.get $6)
+ (i32.store offset=28
+ (local.get $0)
(local.get $1)
)
- (i32.store
- (local.get $11)
+ (i32.store offset=20
+ (local.get $0)
(local.get $1)
)
(br $__rjto$1)
@@ -964,12 +948,12 @@
(local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $6)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $11)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
(i32.store
@@ -998,7 +982,7 @@
)
)
(global.set $STACKTOP
- (local.get $10)
+ (local.get $8)
)
(local.get $2)
)
@@ -1010,11 +994,7 @@
(local $6 i32)
(local $7 i32)
(local $8 i32)
- (local $9 i32)
- (local $10 i32)
- (local $11 i32)
- (local $12 i32)
- (local.set $6
+ (local.set $2
(global.get $STACKTOP)
)
(global.set $STACKTOP
@@ -1030,26 +1010,27 @@
)
(call $abort)
)
- (local.set $3
+ (local.set $6
(i32.add
- (local.get $6)
+ (local.get $2)
(i32.const 120)
)
)
- (local.set $5
+ (local.set $7
+ (local.get $2)
+ )
+ (local.set $4
(i32.add
- (local.tee $4
- (local.get $6)
- )
+ (local.get $2)
(i32.const 136)
)
)
- (local.set $8
+ (local.set $5
(i32.add
- (local.tee $2
- (local.tee $7
+ (local.tee $3
+ (local.tee $8
(i32.add
- (local.get $4)
+ (local.get $2)
(i32.const 80)
)
)
@@ -1059,23 +1040,23 @@
)
(loop $do-in
(i32.store
- (local.get $2)
+ (local.get $3)
(i32.const 0)
)
(br_if $do-in
(i32.lt_s
- (local.tee $2
+ (local.tee $3
(i32.add
- (local.get $2)
+ (local.get $3)
(i32.const 4)
)
)
- (local.get $8)
+ (local.get $5)
)
)
)
- (i32.store
- (local.get $3)
+ (i32.store offset=120
+ (local.get $2)
(i32.load
(local.get $1)
)
@@ -1085,9 +1066,9 @@
(i32.lt_s
(call $_printf_core
(i32.const 0)
- (local.get $3)
- (local.get $4)
+ (local.get $6)
(local.get $7)
+ (local.get $8)
)
(i32.const 0)
)
@@ -1098,7 +1079,7 @@
(local.get $0)
)
)
- (local.set $9
+ (local.set $3
(i32.load
(local.get $0)
)
@@ -1113,87 +1094,62 @@
(i32.store
(local.get $0)
(i32.and
- (local.get $9)
+ (local.get $3)
(i32.const -33)
)
)
)
(if
- (i32.load
- (local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 48)
- )
- )
+ (i32.load offset=48
+ (local.get $0)
)
(drop
(call $_printf_core
(local.get $0)
- (local.get $3)
- (local.get $4)
+ (local.get $6)
(local.get $7)
+ (local.get $8)
)
)
(block
- (local.set $11
- (i32.load
- (local.tee $10
- (i32.add
- (local.get $0)
- (i32.const 44)
- )
- )
+ (local.set $5
+ (i32.load offset=44
+ (local.get $0)
)
)
- (i32.store
- (local.get $10)
- (local.get $5)
+ (i32.store offset=44
+ (local.get $0)
+ (local.get $4)
)
- (i32.store
- (local.tee $2
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
- (local.get $5)
+ (i32.store offset=28
+ (local.get $0)
+ (local.get $4)
)
- (i32.store
- (local.tee $12
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
- (local.get $5)
+ (i32.store offset=20
+ (local.get $0)
+ (local.get $4)
)
- (i32.store
- (local.get $1)
+ (i32.store offset=48
+ (local.get $0)
(i32.const 80)
)
- (i32.store
- (local.tee $8
- (i32.add
- (local.get $0)
- (i32.const 16)
- )
- )
+ (i32.store offset=16
+ (local.get $0)
(i32.add
- (local.get $5)
+ (local.get $4)
(i32.const 80)
)
)
(drop
(call $_printf_core
(local.get $0)
- (local.get $3)
- (local.get $4)
+ (local.get $6)
(local.get $7)
+ (local.get $8)
)
)
(if
- (local.get $11)
+ (local.get $5)
(block
(drop
(call_indirect (type $FUNCSIG$iiii)
@@ -1212,28 +1168,28 @@
)
)
(drop
- (i32.load
- (local.get $12)
+ (i32.load offset=20
+ (local.get $0)
)
)
- (i32.store
- (local.get $10)
- (local.get $11)
+ (i32.store offset=44
+ (local.get $0)
+ (local.get $5)
)
- (i32.store
- (local.get $1)
+ (i32.store offset=48
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $8)
+ (i32.store offset=16
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $2)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $12)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
)
@@ -1247,7 +1203,7 @@
(local.get $0)
)
(i32.and
- (local.get $9)
+ (local.get $3)
(i32.const 32)
)
)
@@ -1257,25 +1213,19 @@
)
)
(global.set $STACKTOP
- (local.get $6)
+ (local.get $2)
)
)
(func $___fwritex (; 37 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
- (local $6 i32)
(block $label$break$L5
(block $__rjti$0
(br_if $__rjti$0
(local.tee $3
- (i32.load
- (local.tee $4
- (i32.add
- (local.get $2)
- (i32.const 16)
- )
- )
+ (i32.load offset=16
+ (local.get $2)
)
)
)
@@ -1287,8 +1237,8 @@
)
(block
(local.set $3
- (i32.load
- (local.get $4)
+ (i32.load offset=16
+ (local.get $2)
)
)
(br $__rjti$0)
@@ -1301,13 +1251,8 @@
(i32.sub
(local.get $3)
(local.tee $4
- (i32.load
- (local.tee $5
- (i32.add
- (local.get $2)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $2)
)
)
)
@@ -1359,7 +1304,7 @@
(i32.load8_s
(i32.add
(local.get $0)
- (local.tee $6
+ (local.tee $5
(i32.add
(local.get $3)
(i32.const -1)
@@ -1371,7 +1316,7 @@
)
(block
(local.set $3
- (local.get $6)
+ (local.get $5)
)
(br $while-in)
)
@@ -1397,8 +1342,8 @@
)
)
(local.set $4
- (i32.load
- (local.get $5)
+ (i32.load offset=20
+ (local.get $2)
)
)
(local.set $1
@@ -1425,11 +1370,11 @@
(local.get $1)
)
)
- (i32.store
- (local.get $5)
+ (i32.store offset=20
+ (local.get $2)
(i32.add
- (i32.load
- (local.get $5)
+ (i32.load offset=20
+ (local.get $2)
)
(local.get $1)
)
@@ -1438,21 +1383,14 @@
)
(func $___towrite (; 38 ;) (; has Stack IR ;) (param $0 i32) (result i32)
(local $1 i32)
- (local $2 i32)
- (local.set $1
- (i32.load8_s
- (local.tee $2
- (i32.add
+ (i32.store8 offset=74
+ (local.get $0)
+ (i32.or
+ (local.tee $1
+ (i32.load8_s offset=74
(local.get $0)
- (i32.const 74)
)
)
- )
- )
- (i32.store8
- (local.get $2)
- (i32.or
- (local.get $1)
(i32.add
(local.get $1)
(i32.const 255)
@@ -1910,29 +1848,15 @@
(local $1 i32)
(local $2 i32)
(local $3 i32)
- (local $4 i32)
- (local $5 i32)
- (local $6 i32)
- (local $7 i32)
(block $__rjto$0 (result i32)
(block $__rjti$0
(br_if $__rjti$0
(i32.le_u
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
+ (i32.load offset=28
+ (local.get $0)
)
)
)
@@ -1956,8 +1880,8 @@
)
)
(br_if $__rjti$0
- (i32.load
- (local.get $2)
+ (i32.load offset=20
+ (local.get $0)
)
)
(br $__rjto$0
@@ -1966,29 +1890,19 @@
)
(if
(i32.lt_u
- (local.tee $4
- (i32.load
- (local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 4)
- )
- )
+ (local.tee $1
+ (i32.load offset=4
+ (local.get $0)
)
)
- (local.tee $6
- (i32.load
- (local.tee $5
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
+ (local.tee $2
+ (i32.load offset=8
+ (local.get $0)
)
)
)
(block
- (local.set $7
+ (local.set $3
(i32.load offset=40
(local.get $0)
)
@@ -1997,13 +1911,13 @@
(call_indirect (type $FUNCSIG$iiii)
(local.get $0)
(i32.sub
- (local.get $4)
- (local.get $6)
+ (local.get $1)
+ (local.get $2)
)
(i32.const 1)
(i32.add
(i32.and
- (local.get $7)
+ (local.get $3)
(i32.const 7)
)
(i32.const 2)
@@ -2016,20 +1930,20 @@
(local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $3)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $2)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $5)
+ (i32.store offset=8
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $1)
+ (i32.store offset=4
+ (local.get $0)
(i32.const 0)
)
(i32.const 0)
@@ -2133,8 +2047,7 @@
(local $48 i32)
(local $49 i32)
(local $50 i32)
- (local $51 i32)
- (local.set $34
+ (local.set $20
(global.get $STACKTOP)
)
(global.set $STACKTOP
@@ -2150,16 +2063,16 @@
)
(call $abort)
)
- (local.set $20
+ (local.set $39
(i32.add
- (local.get $34)
+ (local.get $20)
(i32.const 16)
)
)
- (local.set $35
+ (local.set $33
(i32.add
(local.tee $13
- (local.get $34)
+ (local.get $20)
)
(i32.const 528)
)
@@ -2170,7 +2083,7 @@
(i32.const 0)
)
)
- (local.set $38
+ (local.set $36
(local.tee $25
(i32.add
(local.tee $4
@@ -2183,21 +2096,16 @@
)
)
)
- (local.set $39
+ (local.set $40
(i32.add
(local.get $4)
(i32.const 39)
)
)
- (local.set $43
+ (local.set $41
(i32.add
- (local.tee $40
- (i32.add
- (local.get $13)
- (i32.const 8)
- )
- )
- (i32.const 4)
+ (local.get $13)
+ (i32.const 8)
)
)
(local.set $32
@@ -2211,18 +2119,18 @@
(i32.const 12)
)
)
- (local.set $41
+ (local.set $42
(i32.add
(local.get $4)
(i32.const 11)
)
)
- (local.set $44
+ (local.set $43
(i32.sub
(local.tee $27
(local.get $32)
)
- (local.tee $36
+ (local.tee $34
(local.tee $23
(i32.add
(local.get $13)
@@ -2232,21 +2140,21 @@
)
)
)
- (local.set $45
+ (local.set $44
(i32.sub
(i32.const -2)
- (local.get $36)
+ (local.get $34)
)
)
- (local.set $46
+ (local.set $45
(i32.add
(local.get $27)
(i32.const 2)
)
)
- (local.set $48
+ (local.set $47
(i32.add
- (local.tee $47
+ (local.tee $46
(i32.add
(local.get $13)
(i32.const 24)
@@ -2255,7 +2163,7 @@
(i32.const 288)
)
)
- (local.set $42
+ (local.set $37
(local.tee $29
(i32.add
(local.get $23)
@@ -2263,7 +2171,7 @@
)
)
)
- (local.set $33
+ (local.set $38
(i32.add
(local.get $23)
(i32.const 8)
@@ -3571,7 +3479,7 @@
(local.tee $10
(i32.add
(i32.sub
- (local.get $38)
+ (local.get $36)
(local.tee $6
(local.get $7)
)
@@ -3699,14 +3607,14 @@
(local.get $13)
)
)
- (i32.store8
- (local.get $39)
+ (i32.store8 offset=575
+ (local.get $13)
(i32.load
(local.get $13)
)
)
(local.set $4
- (local.get $39)
+ (local.get $40)
)
(local.set $10
(local.get $7)
@@ -3751,19 +3659,19 @@
(local.get $13)
)
)
- (i32.store
- (local.get $40)
+ (i32.store offset=8
+ (local.get $20)
(i32.load
(local.get $13)
)
)
- (i32.store
- (local.get $43)
+ (i32.store offset=12
+ (local.get $13)
(i32.const 0)
)
(i32.store
(local.get $13)
- (local.get $40)
+ (local.get $41)
)
(local.set $7
(i32.const -1)
@@ -3797,7 +3705,7 @@
(local.get $13)
)
)
- (i32.store
+ (i32.store offset=16
(local.get $20)
(i32.const 0)
)
@@ -3886,7 +3794,7 @@
(f64.mul
(call $_frexp
(local.get $15)
- (local.get $20)
+ (local.get $39)
)
(f64.const 2)
)
@@ -3894,10 +3802,10 @@
(f64.const 0)
)
)
- (i32.store
+ (i32.store offset=16
(local.get $20)
(i32.add
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
(i32.const -1)
@@ -4011,7 +3919,7 @@
(i32.sub
(i32.const 0)
(local.tee $6
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
)
@@ -4039,12 +3947,12 @@
(local.get $32)
)
(block
- (i32.store8
- (local.get $41)
+ (i32.store8 offset=587
+ (local.get $13)
(i32.const 48)
)
(local.set $4
- (local.get $41)
+ (local.get $42)
)
)
)
@@ -4131,7 +4039,7 @@
(i32.const 1)
)
)
- (local.get $36)
+ (local.get $34)
)
(i32.const 1)
)
@@ -4180,14 +4088,14 @@
(i32.sub
(i32.add
(local.get $5)
- (local.get $46)
+ (local.get $45)
)
(local.get $7)
)
(i32.add
(local.get $4)
(i32.sub
- (local.get $44)
+ (local.get $43)
(local.get $7)
)
)
@@ -4199,7 +4107,7 @@
(i32.lt_s
(i32.add
(local.get $4)
- (local.get $45)
+ (local.get $44)
)
(local.get $5)
)
@@ -4238,7 +4146,7 @@
(local.set $4
(i32.sub
(local.get $4)
- (local.get $36)
+ (local.get $34)
)
)
(if
@@ -4315,11 +4223,11 @@
(if (result f64)
(local.get $4)
(block (result f64)
- (i32.store
+ (i32.store offset=16
(local.get $20)
(local.tee $4
(i32.add
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
(i32.const -28)
@@ -4333,7 +4241,7 @@
)
(block (result f64)
(local.set $4
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
)
@@ -4344,8 +4252,8 @@
(local.set $6
(local.tee $7
(select
+ (local.get $46)
(local.get $47)
- (local.get $48)
(i32.lt_s
(local.get $4)
(i32.const 0)
@@ -4388,7 +4296,7 @@
(if
(i32.gt_s
(local.tee $8
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
)
@@ -4508,11 +4416,11 @@
)
)
)
- (i32.store
+ (i32.store offset=16
(local.get $20)
(local.tee $8
(i32.sub
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
(local.get $12)
@@ -4603,7 +4511,7 @@
(i32.const -1)
)
)
- (local.set $37
+ (local.set $35
(i32.shr_u
(i32.const 1000000000)
(local.get $12)
@@ -4636,7 +4544,7 @@
(local.get $8)
(local.get $11)
)
- (local.get $37)
+ (local.get $35)
)
)
(br_if $while-in74
@@ -4720,11 +4628,11 @@
)
)
)
- (i32.store
+ (i32.store offset=16
(local.get $20)
(local.tee $8
(i32.add
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
(local.get $12)
@@ -4842,7 +4750,7 @@
(i32.const 103)
)
)
- (local.tee $37
+ (local.tee $35
(i32.ne
(local.get $17)
(i32.const 0)
@@ -4946,7 +4854,7 @@
(if
(i32.eqz
(i32.and
- (local.tee $49
+ (local.tee $48
(i32.eq
(i32.add
(local.get $5)
@@ -4961,7 +4869,7 @@
)
)
(block $do-once81
- (local.set $50
+ (local.set $49
(call $i32u-div
(local.get $24)
(local.get $11)
@@ -4971,7 +4879,7 @@
(if (result f64)
(i32.lt_u
(local.get $12)
- (local.tee $51
+ (local.tee $50
(call $i32s-div
(local.get $11)
(i32.const 2)
@@ -4983,10 +4891,10 @@
(f64.const 1)
(f64.const 1.5)
(i32.and
- (local.get $49)
+ (local.get $48)
(i32.eq
(local.get $12)
- (local.get $51)
+ (local.get $50)
)
)
)
@@ -4997,7 +4905,7 @@
(f64.const 9007199254740994)
(f64.const 9007199254740992)
(i32.and
- (local.get $50)
+ (local.get $49)
(i32.const 1)
)
)
@@ -5232,7 +5140,7 @@
(i32.add
(local.get $17)
(i32.xor
- (local.get $37)
+ (local.get $35)
(i32.const 1)
)
)
@@ -5657,12 +5565,12 @@
(local.get $29)
)
)
- (i32.store8
- (local.get $33)
+ (i32.store8 offset=596
+ (local.get $13)
(i32.const 48)
)
(local.set $6
- (local.get $33)
+ (local.get $38)
)
)
(block
@@ -5704,7 +5612,7 @@
(call $___fwritex
(local.get $6)
(i32.sub
- (local.get $42)
+ (local.get $37)
(local.get $6)
)
(local.get $0)
@@ -5901,12 +5809,12 @@
(local.get $29)
)
(block
- (i32.store8
- (local.get $33)
+ (i32.store8 offset=596
+ (local.get $13)
(i32.const 48)
)
(local.set $4
- (local.get $33)
+ (local.get $38)
)
)
)
@@ -5990,7 +5898,7 @@
)
(local.set $7
(i32.sub
- (local.get $42)
+ (local.get $37)
(local.get $4)
)
)
@@ -6403,7 +6311,7 @@
(i32.lt_s
(local.tee $6
(call $_wctomb
- (local.get $35)
+ (local.get $33)
(local.get $8)
)
)
@@ -6488,7 +6396,7 @@
(i32.add
(local.tee $7
(call $_wctomb
- (local.get $35)
+ (local.get $33)
(local.get $7)
)
)
@@ -6509,7 +6417,7 @@
)
)
(call $___fwritex
- (local.get $35)
+ (local.get $33)
(local.get $7)
(local.get $0)
)
@@ -6600,7 +6508,7 @@
(i32.const 1)
)
(i32.sub
- (local.get $38)
+ (local.get $36)
(local.tee $4
(local.get $6)
)
@@ -6815,7 +6723,7 @@
)
)
(global.set $STACKTOP
- (local.get $34)
+ (local.get $20)
)
(local.get $16)
)
@@ -6900,8 +6808,11 @@
(local.get $0)
(local.get $1)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(i32.shr_s
(i32.shl
(i32.lt_s
@@ -6941,8 +6852,11 @@
(local.get $0)
(local.get $3)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(i32.const 0)
)
(br $label$break$L1)
@@ -6965,8 +6879,11 @@
)
)
(local.set $3
- (i32.load offset=4
- (local.get $3)
+ (i32.load
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
)
)
(i32.store
@@ -6980,8 +6897,11 @@
(local.get $0)
(local.get $5)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(local.get $3)
)
(br $label$break$L1)
@@ -7023,8 +6943,11 @@
)
)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(i32.shr_s
(i32.shl
(i32.lt_s
@@ -7067,8 +6990,11 @@
(i32.const 65535)
)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(i32.const 0)
)
(br $label$break$L1)
@@ -7110,8 +7036,11 @@
)
)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(i32.shr_s
(i32.shl
(i32.lt_s
@@ -7154,8 +7083,11 @@
(i32.const 255)
)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(i32.const 0)
)
(br $label$break$L1)
@@ -7496,569 +7428,575 @@
(local $16 i32)
(local $17 i32)
(local $18 i32)
- (local.set $0
- (if (result i32)
- (i32.lt_u
- (local.get $0)
- (i32.const 245)
- )
- (block (result i32)
- (if
- (i32.and
- (local.tee $10
- (i32.shr_u
- (local.tee $6
- (i32.load
- (i32.const 176)
+ (block $folding-inner1
+ (local.set $0
+ (if (result i32)
+ (i32.lt_u
+ (local.get $0)
+ (i32.const 245)
+ )
+ (block (result i32)
+ (if
+ (i32.and
+ (local.tee $12
+ (i32.shr_u
+ (local.tee $6
+ (i32.load
+ (i32.const 176)
+ )
)
- )
- (local.tee $13
- (i32.shr_u
- (local.tee $2
- (select
- (i32.const 16)
- (i32.and
- (i32.add
+ (local.tee $13
+ (i32.shr_u
+ (local.tee $4
+ (select
+ (i32.const 16)
+ (i32.and
+ (i32.add
+ (local.get $0)
+ (i32.const 11)
+ )
+ (i32.const -8)
+ )
+ (i32.lt_u
(local.get $0)
(i32.const 11)
)
- (i32.const -8)
- )
- (i32.lt_u
- (local.get $0)
- (i32.const 11)
)
)
+ (i32.const 3)
)
- (i32.const 3)
)
)
)
+ (i32.const 3)
)
- (i32.const 3)
- )
- (block
- (if
- (i32.eq
- (local.tee $7
- (i32.load
- (local.tee $1
- (i32.add
- (local.tee $11
- (i32.load
- (local.tee $3
- (i32.add
- (local.tee $2
+ (block
+ (if
+ (i32.eq
+ (local.tee $2
+ (i32.load offset=8
+ (local.tee $3
+ (i32.load offset=8
+ (local.tee $1
+ (i32.add
+ (i32.shl
+ (local.tee $0
(i32.add
- (i32.shl
- (local.tee $4
- (i32.add
- (i32.xor
- (i32.and
- (local.get $10)
- (i32.const 1)
- )
- (i32.const 1)
- )
- (local.get $13)
- )
+ (i32.xor
+ (i32.and
+ (local.get $12)
+ (i32.const 1)
)
- (i32.const 3)
+ (i32.const 1)
)
- (i32.const 216)
+ (local.get $13)
)
)
- (i32.const 8)
+ (i32.const 3)
)
+ (i32.const 216)
)
)
)
- (i32.const 8)
)
)
)
+ (local.get $1)
)
- (local.get $2)
- )
- (i32.store
- (i32.const 176)
- (i32.and
- (local.get $6)
- (i32.xor
- (i32.shl
- (i32.const 1)
- (local.get $4)
- )
- (i32.const -1)
- )
- )
- )
- (block
- (if
- (i32.lt_u
- (local.get $7)
- (i32.load
- (i32.const 192)
+ (i32.store
+ (i32.const 176)
+ (i32.and
+ (local.get $6)
+ (i32.xor
+ (i32.shl
+ (i32.const 1)
+ (local.get $0)
+ )
+ (i32.const -1)
)
)
- (call $_abort)
)
- (if
- (i32.eq
- (local.get $11)
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $7)
- (i32.const 12)
- )
+ (block
+ (if
+ (i32.lt_u
+ (local.get $2)
+ (i32.load
+ (i32.const 192)
)
)
+ (call $_abort)
)
- (block
- (i32.store
- (local.get $0)
- (local.get $2)
- )
- (i32.store
+ (if
+ (i32.eq
(local.get $3)
- (local.get $7)
+ (i32.load offset=12
+ (local.get $2)
+ )
)
+ (block
+ (i32.store offset=12
+ (local.get $2)
+ (local.get $1)
+ )
+ (i32.store offset=8
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+ (call $_abort)
)
- (call $_abort)
)
)
- )
- (i32.store offset=4
- (local.get $11)
- (i32.or
- (local.tee $0
- (i32.shl
- (local.get $4)
- (i32.const 3)
+ (i32.store offset=4
+ (local.get $3)
+ (i32.or
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (i32.const 3)
+ )
)
+ (i32.const 3)
)
- (i32.const 3)
)
- )
- (i32.store
- (local.tee $0
- (i32.add
+ (i32.store offset=4
+ (local.tee $0
(i32.add
(local.get $0)
- (local.get $11)
+ (local.get $3)
)
- (i32.const 4)
)
- )
- (i32.or
- (i32.load
- (local.get $0)
+ (i32.or
+ (i32.load offset=4
+ (local.get $0)
+ )
+ (i32.const 1)
)
- (i32.const 1)
)
- )
- (return
- (local.get $1)
+ (br $folding-inner1)
)
)
- )
- (if (result i32)
- (i32.gt_u
- (local.get $2)
- (local.tee $0
- (i32.load
- (i32.const 184)
+ (if (result i32)
+ (i32.gt_u
+ (local.get $4)
+ (local.tee $0
+ (i32.load
+ (i32.const 184)
+ )
)
)
- )
- (block (result i32)
- (if
- (local.get $10)
- (block
- (if
- (i32.eq
- (local.tee $8
- (i32.load
- (local.tee $4
- (i32.add
- (local.tee $10
- (i32.load
- (local.tee $3
- (i32.add
- (local.tee $7
+ (block (result i32)
+ (if
+ (local.get $12)
+ (block
+ (if
+ (i32.eq
+ (local.tee $9
+ (i32.load offset=8
+ (local.tee $11
+ (i32.load offset=8
+ (local.tee $7
+ (i32.add
+ (i32.shl
+ (local.tee $2
(i32.add
- (i32.shl
- (local.tee $11
- (i32.add
+ (i32.or
+ (i32.or
+ (i32.or
(i32.or
- (i32.or
- (i32.or
- (i32.or
- (local.tee $3
- (i32.and
- (i32.shr_u
- (local.tee $4
- (i32.add
- (i32.and
- (local.tee $3
- (i32.and
- (i32.or
- (local.tee $3
- (i32.shl
- (i32.const 2)
- (local.get $13)
- )
- )
- (i32.sub
- (i32.const 0)
- (local.get $3)
- )
- )
- (i32.shl
- (local.get $10)
- (local.get $13)
- )
+ (local.tee $2
+ (i32.and
+ (i32.shr_u
+ (local.tee $7
+ (i32.add
+ (i32.and
+ (local.tee $2
+ (i32.and
+ (i32.or
+ (local.tee $2
+ (i32.shl
+ (i32.const 2)
+ (local.get $13)
)
)
(i32.sub
(i32.const 0)
- (local.get $3)
+ (local.get $2)
)
)
- (i32.const -1)
+ (i32.shl
+ (local.get $12)
+ (local.get $13)
+ )
)
)
- (i32.const 12)
- )
- (i32.const 16)
- )
- )
- (local.tee $3
- (i32.and
- (i32.shr_u
- (local.tee $4
- (i32.shr_u
- (local.get $4)
- (local.get $3)
- )
+ (i32.sub
+ (i32.const 0)
+ (local.get $2)
)
- (i32.const 5)
)
- (i32.const 8)
+ (i32.const -1)
)
)
+ (i32.const 12)
)
- (local.tee $3
- (i32.and
+ (i32.const 16)
+ )
+ )
+ (local.tee $2
+ (i32.and
+ (i32.shr_u
+ (local.tee $7
(i32.shr_u
- (local.tee $4
- (i32.shr_u
- (local.get $4)
- (local.get $3)
- )
- )
- (i32.const 2)
+ (local.get $7)
+ (local.get $2)
)
- (i32.const 4)
)
+ (i32.const 5)
)
+ (i32.const 8)
)
- (local.tee $3
- (i32.and
+ )
+ )
+ (local.tee $2
+ (i32.and
+ (i32.shr_u
+ (local.tee $7
(i32.shr_u
- (local.tee $4
- (i32.shr_u
- (local.get $4)
- (local.get $3)
- )
- )
- (i32.const 1)
+ (local.get $7)
+ (local.get $2)
)
- (i32.const 2)
)
+ (i32.const 2)
)
+ (i32.const 4)
)
- (local.tee $3
- (i32.and
+ )
+ )
+ (local.tee $2
+ (i32.and
+ (i32.shr_u
+ (local.tee $7
(i32.shr_u
- (local.tee $4
- (i32.shr_u
- (local.get $4)
- (local.get $3)
- )
- )
- (i32.const 1)
+ (local.get $7)
+ (local.get $2)
)
- (i32.const 1)
)
+ (i32.const 1)
)
+ (i32.const 2)
)
+ )
+ )
+ (local.tee $2
+ (i32.and
(i32.shr_u
- (local.get $4)
- (local.get $3)
+ (local.tee $7
+ (i32.shr_u
+ (local.get $7)
+ (local.get $2)
+ )
+ )
+ (i32.const 1)
)
+ (i32.const 1)
)
)
- (i32.const 3)
)
- (i32.const 216)
+ (i32.shr_u
+ (local.get $7)
+ (local.get $2)
+ )
)
)
- (i32.const 8)
+ (i32.const 3)
)
+ (i32.const 216)
)
)
)
- (i32.const 8)
)
)
)
+ (local.get $7)
)
- (local.get $7)
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.and
- (local.get $6)
- (i32.xor
- (i32.shl
- (i32.const 1)
- (local.get $11)
+ (block
+ (i32.store
+ (i32.const 176)
+ (i32.and
+ (local.get $6)
+ (i32.xor
+ (i32.shl
+ (i32.const 1)
+ (local.get $2)
+ )
+ (i32.const -1)
)
- (i32.const -1)
)
)
- )
- (local.set $9
- (local.get $0)
- )
- )
- (block
- (if
- (i32.lt_u
- (local.get $8)
- (i32.load
- (i32.const 192)
- )
+ (local.set $8
+ (local.get $0)
)
- (call $_abort)
)
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $8)
- (i32.const 12)
- )
- )
- )
- (local.get $10)
- )
- (block
- (i32.store
- (local.get $0)
- (local.get $7)
- )
- (i32.store
- (local.get $3)
- (local.get $8)
- )
- (local.set $9
+ (block
+ (if
+ (i32.lt_u
+ (local.get $9)
(i32.load
- (i32.const 184)
+ (i32.const 192)
)
)
+ (call $_abort)
)
- (call $_abort)
- )
- )
- )
- (i32.store offset=4
- (local.get $10)
- (i32.or
- (local.get $2)
- (i32.const 3)
- )
- )
- (i32.store offset=4
- (local.tee $7
- (i32.add
- (local.get $2)
- (local.get $10)
- )
- )
- (i32.or
- (local.tee $11
- (i32.sub
- (i32.shl
+ (if
+ (i32.eq
+ (i32.load offset=12
+ (local.get $9)
+ )
(local.get $11)
- (i32.const 3)
)
- (local.get $2)
+ (block
+ (i32.store offset=12
+ (local.get $9)
+ (local.get $7)
+ )
+ (i32.store offset=8
+ (local.get $7)
+ (local.get $9)
+ )
+ (local.set $8
+ (i32.load
+ (i32.const 184)
+ )
+ )
+ )
+ (call $_abort)
)
)
- (i32.const 1)
)
- )
- (i32.store
- (i32.add
- (local.get $7)
+ (i32.store offset=4
(local.get $11)
+ (i32.or
+ (local.get $4)
+ (i32.const 3)
+ )
)
- (local.get $11)
- )
- (if
- (local.get $9)
- (block
- (local.set $6
- (i32.load
- (i32.const 196)
+ (i32.store offset=4
+ (local.tee $7
+ (i32.add
+ (local.get $4)
+ (local.get $11)
)
)
- (local.set $2
- (i32.add
- (i32.shl
- (local.tee $0
- (i32.shr_u
- (local.get $9)
- (i32.const 3)
- )
+ (i32.or
+ (local.tee $9
+ (i32.sub
+ (i32.shl
+ (local.get $2)
+ (i32.const 3)
)
- (i32.const 3)
+ (local.get $4)
)
- (i32.const 216)
)
+ (i32.const 1)
)
- (if
- (i32.and
- (local.tee $3
- (i32.load
- (i32.const 176)
- )
+ )
+ (i32.store
+ (i32.add
+ (local.get $7)
+ (local.get $9)
+ )
+ (local.get $9)
+ )
+ (if
+ (local.get $8)
+ (block
+ (local.set $6
+ (i32.load
+ (i32.const 196)
)
- (local.tee $0
+ )
+ (local.set $4
+ (i32.add
(i32.shl
- (i32.const 1)
- (local.get $0)
+ (local.tee $0
+ (i32.shr_u
+ (local.get $8)
+ (i32.const 3)
+ )
+ )
+ (i32.const 3)
)
+ (i32.const 216)
)
)
(if
- (i32.lt_u
- (local.tee $0
+ (i32.and
+ (local.tee $2
(i32.load
- (local.tee $3
- (i32.add
- (local.get $2)
- (i32.const 8)
- )
- )
+ (i32.const 176)
)
)
- (i32.load
- (i32.const 192)
+ (local.tee $0
+ (i32.shl
+ (i32.const 1)
+ (local.get $0)
+ )
)
)
- (call $_abort)
(block
- (local.set $5
- (local.get $3)
+ (local.set $2
+ (i32.add
+ (local.get $4)
+ (i32.const 8)
+ )
)
- (local.set $1
- (local.get $0)
+ (if
+ (i32.lt_u
+ (local.tee $0
+ (i32.load offset=8
+ (local.get $4)
+ )
+ )
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ (call $_abort)
+ (block
+ (local.set $3
+ (local.get $2)
+ )
+ (local.set $1
+ (local.get $0)
+ )
+ )
)
)
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.or
- (local.get $0)
- (local.get $3)
+ (block
+ (i32.store
+ (i32.const 176)
+ (i32.or
+ (local.get $0)
+ (local.get $2)
+ )
)
- )
- (local.set $5
- (i32.add
- (local.get $2)
- (i32.const 8)
+ (local.set $3
+ (i32.add
+ (local.get $4)
+ (i32.const 8)
+ )
+ )
+ (local.set $1
+ (local.get $4)
)
)
- (local.set $1
- (local.get $2)
+ )
+ (i32.store
+ (local.get $3)
+ (local.get $6)
+ )
+ (i32.store
+ (i32.add
+ (local.get $1)
+ (i32.const 12)
)
+ (local.get $6)
+ )
+ (i32.store offset=8
+ (local.get $6)
+ (local.get $1)
+ )
+ (i32.store offset=12
+ (local.get $6)
+ (local.get $4)
)
)
- (i32.store
- (local.get $5)
- (local.get $6)
- )
- (i32.store offset=12
- (local.get $1)
- (local.get $6)
- )
- (i32.store offset=8
- (local.get $6)
- (local.get $1)
- )
- (i32.store offset=12
- (local.get $6)
- (local.get $2)
+ )
+ (i32.store
+ (i32.const 184)
+ (local.get $9)
+ )
+ (i32.store
+ (i32.const 196)
+ (local.get $7)
+ )
+ (return
+ (i32.add
+ (local.get $11)
+ (i32.const 8)
)
)
)
- (i32.store
- (i32.const 184)
- (local.get $11)
- )
- (i32.store
- (i32.const 196)
- (local.get $7)
- )
- (return
- (local.get $4)
- )
)
- )
- (if (result i32)
- (local.tee $0
- (i32.load
- (i32.const 180)
+ (if (result i32)
+ (local.tee $0
+ (i32.load
+ (i32.const 180)
+ )
)
- )
- (block
- (local.set $11
- (i32.sub
- (i32.and
- (i32.load offset=4
- (local.tee $0
- (i32.load offset=480
- (i32.shl
+ (block
+ (local.set $7
+ (i32.sub
+ (i32.and
+ (i32.load offset=4
+ (local.tee $0
+ (i32.load
(i32.add
- (i32.or
- (i32.or
+ (i32.shl
+ (i32.add
(i32.or
(i32.or
- (local.tee $0
- (i32.and
- (i32.shr_u
- (local.tee $1
- (i32.add
- (i32.and
- (local.get $0)
- (i32.sub
- (i32.const 0)
+ (i32.or
+ (i32.or
+ (local.tee $0
+ (i32.and
+ (i32.shr_u
+ (local.tee $1
+ (i32.add
+ (i32.and
+ (local.get $0)
+ (i32.sub
+ (i32.const 0)
+ (local.get $0)
+ )
+ )
+ (i32.const -1)
+ )
+ )
+ (i32.const 12)
+ )
+ (i32.const 16)
+ )
+ )
+ (local.tee $0
+ (i32.and
+ (i32.shr_u
+ (local.tee $1
+ (i32.shr_u
+ (local.get $1)
(local.get $0)
)
)
- (i32.const -1)
+ (i32.const 5)
)
+ (i32.const 8)
)
- (i32.const 12)
)
- (i32.const 16)
+ )
+ (local.tee $0
+ (i32.and
+ (i32.shr_u
+ (local.tee $1
+ (i32.shr_u
+ (local.get $1)
+ (local.get $0)
+ )
+ )
+ (i32.const 2)
+ )
+ (i32.const 4)
+ )
)
)
(local.tee $0
@@ -8070,9 +8008,9 @@
(local.get $0)
)
)
- (i32.const 5)
+ (i32.const 1)
)
- (i32.const 8)
+ (i32.const 2)
)
)
)
@@ -8085,881 +8023,876 @@
(local.get $0)
)
)
- (i32.const 2)
- )
- (i32.const 4)
- )
- )
- )
- (local.tee $0
- (i32.and
- (i32.shr_u
- (local.tee $1
- (i32.shr_u
- (local.get $1)
- (local.get $0)
- )
+ (i32.const 1)
)
(i32.const 1)
)
- (i32.const 2)
)
)
- )
- (local.tee $0
- (i32.and
- (i32.shr_u
- (local.tee $1
- (i32.shr_u
- (local.get $1)
- (local.get $0)
- )
- )
- (i32.const 1)
- )
- (i32.const 1)
+ (i32.shr_u
+ (local.get $1)
+ (local.get $0)
)
)
+ (i32.const 2)
)
- (i32.shr_u
- (local.get $1)
- (local.get $0)
- )
+ (i32.const 480)
)
- (i32.const 2)
)
)
)
+ (i32.const -8)
)
- (i32.const -8)
+ (local.get $4)
)
- (local.get $2)
)
- )
- (local.set $7
- (local.get $0)
- )
- (loop $while-in
- (block $while-out
- (if
- (local.tee $1
- (i32.load offset=16
- (local.get $0)
- )
- )
- (local.set $0
- (local.get $1)
- )
+ (local.set $3
+ (local.tee $1
+ (local.get $0)
+ )
+ )
+ (loop $while-in
+ (block $while-out
(if
(i32.eqz
(local.tee $0
- (i32.load offset=20
- (local.get $0)
+ (i32.load
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
)
)
)
- (block
- (local.set $6
- (local.get $11)
+ (if
+ (i32.eqz
+ (local.tee $0
+ (i32.load
+ (i32.add
+ (local.get $1)
+ (i32.const 20)
+ )
+ )
+ )
)
- (local.set $8
- (local.get $7)
+ (block
+ (local.set $9
+ (local.get $7)
+ )
+ (local.set $6
+ (local.get $3)
+ )
+ (br $while-out)
)
- (br $while-out)
)
)
- )
- (local.set $6
- (i32.lt_u
- (local.tee $1
- (i32.sub
- (i32.and
- (i32.load offset=4
- (local.get $0)
+ (local.set $9
+ (i32.lt_u
+ (local.tee $1
+ (i32.sub
+ (i32.and
+ (i32.load
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
+ )
+ (i32.const -8)
)
- (i32.const -8)
+ (local.get $4)
)
- (local.get $2)
)
+ (local.get $7)
)
- (local.get $11)
)
- )
- (local.set $11
- (select
- (local.get $1)
- (local.get $11)
- (local.get $6)
+ (local.set $7
+ (select
+ (local.get $1)
+ (local.get $7)
+ (local.get $9)
+ )
)
- )
- (local.set $7
- (select
- (local.get $0)
- (local.get $7)
- (local.get $6)
+ (local.set $3
+ (select
+ (local.tee $1
+ (local.get $0)
+ )
+ (local.get $3)
+ (local.get $9)
+ )
)
+ (br $while-in)
)
- (br $while-in)
)
- )
- (if
- (i32.lt_u
- (local.get $8)
- (local.tee $10
- (i32.load
- (i32.const 192)
+ (if
+ (i32.lt_u
+ (local.get $6)
+ (local.tee $11
+ (i32.load
+ (i32.const 192)
+ )
)
)
+ (call $_abort)
)
- (call $_abort)
- )
- (if
- (i32.ge_u
- (local.get $8)
- (local.tee $5
- (i32.add
- (local.get $2)
- (local.get $8)
+ (if
+ (i32.ge_u
+ (local.get $6)
+ (local.tee $12
+ (i32.add
+ (local.get $4)
+ (local.get $6)
+ )
)
)
+ (call $_abort)
)
- (call $_abort)
- )
- (local.set $9
- (i32.load offset=24
- (local.get $8)
+ (local.set $8
+ (i32.load offset=24
+ (local.get $6)
+ )
)
- )
- (if
- (i32.eq
- (local.tee $0
- (i32.load offset=12
- (local.get $8)
+ (if
+ (i32.eq
+ (local.tee $0
+ (i32.load offset=12
+ (local.get $6)
+ )
)
+ (local.get $6)
)
- (local.get $8)
- )
- (block $do-once4
- (if
- (i32.eqz
- (local.tee $1
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $8)
- (i32.const 20)
- )
- )
- )
+ (block $do-once4
+ (local.set $0
+ (i32.add
+ (local.get $6)
+ (i32.const 20)
)
)
- (br_if $do-once4
+ (if
(i32.eqz
(local.tee $1
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $8)
- (i32.const 16)
+ (i32.load offset=20
+ (local.get $6)
+ )
+ )
+ )
+ (block
+ (local.set $0
+ (i32.add
+ (local.get $6)
+ (i32.const 16)
+ )
+ )
+ (br_if $do-once4
+ (i32.eqz
+ (local.tee $1
+ (i32.load offset=16
+ (local.get $6)
)
)
)
)
)
)
- )
- (loop $while-in7
- (if
- (local.tee $7
- (i32.load
- (local.tee $11
- (i32.add
- (local.get $1)
- (i32.const 20)
+ (loop $while-in7
+ (if
+ (local.tee $3
+ (i32.load
+ (local.tee $7
+ (i32.add
+ (local.get $1)
+ (i32.const 20)
+ )
)
)
)
- )
- (block
- (local.set $1
- (local.get $7)
- )
- (local.set $0
- (local.get $11)
+ (block
+ (local.set $1
+ (local.get $3)
+ )
+ (local.set $0
+ (local.get $7)
+ )
+ (br $while-in7)
)
- (br $while-in7)
)
- )
- (if
- (local.tee $7
- (i32.load
- (local.tee $11
- (i32.add
- (local.get $1)
- (i32.const 16)
+ (if
+ (local.tee $3
+ (i32.load
+ (local.tee $7
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
)
)
)
- )
- (block
- (local.set $1
- (local.get $7)
- )
- (local.set $0
- (local.get $11)
+ (block
+ (local.set $1
+ (local.get $3)
+ )
+ (local.set $0
+ (local.get $7)
+ )
+ (br $while-in7)
)
- (br $while-in7)
)
)
- )
- (if
- (i32.lt_u
- (local.get $0)
- (local.get $10)
- )
- (call $_abort)
- (block
- (i32.store
+ (if
+ (i32.lt_u
(local.get $0)
- (i32.const 0)
- )
- (local.set $4
- (local.get $1)
+ (local.get $11)
)
- )
- )
- )
- (block
- (if
- (i32.lt_u
- (local.tee $11
- (i32.load offset=8
- (local.get $8)
+ (call $_abort)
+ (block
+ (i32.store
+ (local.get $0)
+ (i32.const 0)
)
- )
- (local.get $10)
- )
- (call $_abort)
- )
- (if
- (i32.ne
- (local.get $8)
- (i32.load
- (local.tee $7
- (i32.add
- (local.get $11)
- (i32.const 12)
- )
+ (local.set $10
+ (local.get $1)
)
)
)
- (call $_abort)
)
- (if
- (i32.eq
- (i32.load
+ (block
+ (if
+ (i32.lt_u
(local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 8)
+ (i32.load offset=8
+ (local.get $6)
)
)
+ (local.get $11)
)
- (local.get $8)
+ (call $_abort)
)
- (block
- (i32.store
- (local.get $7)
- (local.get $0)
+ (if
+ (i32.ne
+ (local.get $6)
+ (i32.load offset=12
+ (local.get $1)
+ )
)
- (i32.store
- (local.get $1)
- (local.get $11)
+ (call $_abort)
+ )
+ (if
+ (i32.eq
+ (i32.load offset=8
+ (local.get $0)
+ )
+ (local.get $6)
)
- (local.set $4
- (local.get $0)
+ (block
+ (i32.store offset=12
+ (local.get $1)
+ (local.get $0)
+ )
+ (i32.store offset=8
+ (local.get $0)
+ (local.get $1)
+ )
+ (local.set $10
+ (local.get $0)
+ )
)
+ (call $_abort)
)
- (call $_abort)
)
)
- )
- (if
- (local.get $9)
- (block $do-once8
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (i32.shl
- (local.tee $1
- (i32.load offset=28
- (local.get $8)
+ (if
+ (local.get $8)
+ (block $do-once8
+ (if
+ (i32.eq
+ (i32.load
+ (local.tee $0
+ (i32.add
+ (i32.shl
+ (local.tee $1
+ (i32.load offset=28
+ (local.get $6)
+ )
)
+ (i32.const 2)
)
- (i32.const 2)
+ (i32.const 480)
)
- (i32.const 480)
)
)
+ (local.get $6)
)
- (local.get $8)
- )
- (block
- (i32.store
- (local.get $0)
- (local.get $4)
- )
- (if
- (i32.eqz
- (local.get $4)
+ (block
+ (i32.store
+ (local.get $0)
+ (local.get $10)
)
- (block
- (i32.store
- (i32.const 180)
- (i32.and
- (i32.load
- (i32.const 180)
- )
- (i32.xor
- (i32.shl
- (i32.const 1)
- (local.get $1)
+ (if
+ (i32.eqz
+ (local.get $10)
+ )
+ (block
+ (i32.store
+ (i32.const 180)
+ (i32.and
+ (i32.load
+ (i32.const 180)
+ )
+ (i32.xor
+ (i32.shl
+ (i32.const 1)
+ (local.get $1)
+ )
+ (i32.const -1)
)
- (i32.const -1)
)
)
+ (br $do-once8)
)
- (br $do-once8)
)
)
- )
- (block
- (if
- (i32.lt_u
- (local.get $9)
- (i32.load
- (i32.const 192)
+ (block
+ (if
+ (i32.lt_u
+ (local.get $8)
+ (i32.load
+ (i32.const 192)
+ )
)
+ (call $_abort)
)
- (call $_abort)
- )
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $9)
- (i32.const 16)
- )
+ (if
+ (i32.eq
+ (i32.load offset=16
+ (local.get $8)
)
+ (local.get $6)
+ )
+ (i32.store offset=16
+ (local.get $8)
+ (local.get $10)
+ )
+ (i32.store offset=20
+ (local.get $8)
+ (local.get $10)
)
- (local.get $8)
- )
- (i32.store
- (local.get $0)
- (local.get $4)
- )
- (i32.store offset=20
- (local.get $9)
- (local.get $4)
)
- )
- (br_if $do-once8
- (i32.eqz
- (local.get $4)
+ (br_if $do-once8
+ (i32.eqz
+ (local.get $10)
+ )
)
)
)
- )
- (if
- (i32.lt_u
- (local.get $4)
- (local.tee $0
- (i32.load
- (i32.const 192)
+ (if
+ (i32.lt_u
+ (local.get $10)
+ (local.tee $0
+ (i32.load
+ (i32.const 192)
+ )
)
)
+ (call $_abort)
)
- (call $_abort)
- )
- (i32.store offset=24
- (local.get $4)
- (local.get $9)
- )
- (if
- (local.tee $1
- (i32.load offset=16
- (local.get $8)
+ (i32.store
+ (i32.add
+ (local.get $10)
+ (i32.const 24)
)
+ (local.get $8)
)
(if
- (i32.lt_u
- (local.get $1)
- (local.get $0)
+ (local.tee $1
+ (i32.load offset=16
+ (local.get $6)
+ )
)
- (call $_abort)
- (block
- (i32.store offset=16
- (local.get $4)
+ (if
+ (i32.lt_u
(local.get $1)
+ (local.get $0)
)
- (i32.store offset=24
- (local.get $1)
- (local.get $4)
+ (call $_abort)
+ (block
+ (i32.store
+ (i32.add
+ (local.get $10)
+ (i32.const 16)
+ )
+ (local.get $1)
+ )
+ (i32.store offset=24
+ (local.get $1)
+ (local.get $10)
+ )
)
)
)
- )
- (if
- (local.tee $0
- (i32.load offset=20
- (local.get $8)
- )
- )
(if
- (i32.lt_u
- (local.get $0)
- (i32.load
- (i32.const 192)
+ (local.tee $0
+ (i32.load offset=20
+ (local.get $6)
)
)
- (call $_abort)
- (block
- (i32.store offset=20
- (local.get $4)
+ (if
+ (i32.lt_u
(local.get $0)
+ (i32.load
+ (i32.const 192)
+ )
)
- (i32.store offset=24
- (local.get $0)
- (local.get $4)
+ (call $_abort)
+ (block
+ (i32.store
+ (i32.add
+ (local.get $10)
+ (i32.const 20)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=24
+ (local.get $0)
+ (local.get $10)
+ )
)
)
)
)
)
- )
- (if
- (i32.lt_u
- (local.get $6)
- (i32.const 16)
- )
- (block
- (i32.store offset=4
- (local.get $8)
- (i32.or
- (local.tee $0
- (i32.add
- (local.get $2)
- (local.get $6)
+ (if
+ (i32.lt_u
+ (local.get $9)
+ (i32.const 16)
+ )
+ (block
+ (i32.store offset=4
+ (local.get $6)
+ (i32.or
+ (local.tee $0
+ (i32.add
+ (local.get $4)
+ (local.get $9)
+ )
)
+ (i32.const 3)
)
- (i32.const 3)
)
- )
- (i32.store
- (local.tee $0
- (i32.add
+ (i32.store offset=4
+ (local.tee $0
(i32.add
(local.get $0)
- (local.get $8)
+ (local.get $6)
)
- (i32.const 4)
)
- )
- (i32.or
- (i32.load
- (local.get $0)
+ (i32.or
+ (i32.load offset=4
+ (local.get $0)
+ )
+ (i32.const 1)
)
- (i32.const 1)
)
)
- )
- (block
- (i32.store offset=4
- (local.get $8)
- (i32.or
- (local.get $2)
- (i32.const 3)
- )
- )
- (i32.store offset=4
- (local.get $5)
- (i32.or
+ (block
+ (i32.store offset=4
(local.get $6)
- (i32.const 1)
+ (i32.or
+ (local.get $4)
+ (i32.const 3)
+ )
)
- )
- (i32.store
- (i32.add
- (local.get $5)
- (local.get $6)
+ (i32.store offset=4
+ (local.get $12)
+ (i32.or
+ (local.get $9)
+ (i32.const 1)
+ )
)
- (local.get $6)
- )
- (if
- (local.tee $0
- (i32.load
- (i32.const 184)
+ (i32.store
+ (i32.add
+ (local.get $9)
+ (local.get $12)
)
+ (local.get $9)
)
- (block
- (local.set $4
+ (if
+ (local.tee $0
(i32.load
- (i32.const 196)
+ (i32.const 184)
)
)
- (local.set $2
- (i32.add
- (i32.shl
- (local.tee $0
- (i32.shr_u
- (local.get $0)
- (i32.const 3)
- )
- )
- (i32.const 3)
+ (block
+ (local.set $4
+ (i32.load
+ (i32.const 196)
)
- (i32.const 216)
)
- )
- (if
- (i32.and
- (local.tee $1
- (i32.load
- (i32.const 176)
- )
- )
- (local.tee $0
+ (local.set $3
+ (i32.add
(i32.shl
- (i32.const 1)
- (local.get $0)
+ (local.tee $0
+ (i32.shr_u
+ (local.get $0)
+ (i32.const 3)
+ )
+ )
+ (i32.const 3)
)
+ (i32.const 216)
)
)
(if
- (i32.lt_u
- (local.tee $0
+ (i32.and
+ (local.tee $1
(i32.load
- (local.tee $1
- (i32.add
- (local.get $2)
- (i32.const 8)
- )
- )
+ (i32.const 176)
)
)
- (i32.load
- (i32.const 192)
+ (local.tee $0
+ (i32.shl
+ (i32.const 1)
+ (local.get $0)
+ )
)
)
- (call $_abort)
(block
- (local.set $12
- (local.get $1)
+ (local.set $1
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
)
- (local.set $3
- (local.get $0)
+ (if
+ (i32.lt_u
+ (local.tee $0
+ (i32.load offset=8
+ (local.get $3)
+ )
+ )
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ (call $_abort)
+ (block
+ (local.set $5
+ (local.get $1)
+ )
+ (local.set $2
+ (local.get $0)
+ )
+ )
)
)
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.or
- (local.get $0)
- (local.get $1)
+ (block
+ (i32.store
+ (i32.const 176)
+ (i32.or
+ (local.get $0)
+ (local.get $1)
+ )
)
- )
- (local.set $12
- (i32.add
- (local.get $2)
- (i32.const 8)
+ (local.set $5
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ )
+ (local.set $2
+ (local.get $3)
)
)
- (local.set $3
+ )
+ (i32.store
+ (local.get $5)
+ (local.get $4)
+ )
+ (i32.store
+ (i32.add
(local.get $2)
+ (i32.const 12)
)
+ (local.get $4)
+ )
+ (i32.store offset=8
+ (local.get $4)
+ (local.get $2)
+ )
+ (i32.store offset=12
+ (local.get $4)
+ (local.get $3)
)
)
- (i32.store
- (local.get $12)
- (local.get $4)
- )
- (i32.store offset=12
- (local.get $3)
- (local.get $4)
- )
- (i32.store offset=8
- (local.get $4)
- (local.get $3)
- )
- (i32.store offset=12
- (local.get $4)
- (local.get $2)
- )
+ )
+ (i32.store
+ (i32.const 184)
+ (local.get $9)
+ )
+ (i32.store
+ (i32.const 196)
+ (local.get $12)
)
)
- (i32.store
- (i32.const 184)
+ )
+ (return
+ (i32.add
(local.get $6)
- )
- (i32.store
- (i32.const 196)
- (local.get $5)
+ (i32.const 8)
)
)
)
- (return
- (i32.add
- (local.get $8)
- (i32.const 8)
- )
- )
+ (local.get $4)
)
- (local.get $2)
)
+ (local.get $4)
)
- (local.get $2)
)
- )
- (if (result i32)
- (i32.gt_u
- (local.get $0)
- (i32.const -65)
- )
- (i32.const -1)
- (block $do-once (result i32)
- (local.set $2
- (i32.and
- (local.tee $0
- (i32.add
- (local.get $0)
- (i32.const 11)
+ (if (result i32)
+ (i32.gt_u
+ (local.get $0)
+ (i32.const -65)
+ )
+ (i32.const -1)
+ (block $do-once (result i32)
+ (local.set $3
+ (i32.and
+ (local.tee $0
+ (i32.add
+ (local.get $0)
+ (i32.const 11)
+ )
)
+ (i32.const -8)
)
- (i32.const -8)
)
- )
- (if (result i32)
- (local.tee $18
- (i32.load
- (i32.const 180)
+ (if (result i32)
+ (local.tee $18
+ (i32.load
+ (i32.const 180)
+ )
)
- )
- (block (result i32)
- (local.set $14
- (if (result i32)
- (local.tee $0
- (i32.shr_u
- (local.get $0)
- (i32.const 8)
- )
- )
+ (block (result i32)
+ (local.set $14
(if (result i32)
- (i32.gt_u
- (local.get $2)
- (i32.const 16777215)
+ (local.tee $0
+ (i32.shr_u
+ (local.get $0)
+ (i32.const 8)
+ )
)
- (i32.const 31)
- (block (result i32)
- (local.set $4
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $0
- (i32.shl
- (local.get $0)
- (local.tee $1
- (i32.and
- (i32.shr_u
- (i32.add
- (local.get $0)
- (i32.const 1048320)
+ (if (result i32)
+ (i32.gt_u
+ (local.get $3)
+ (i32.const 16777215)
+ )
+ (i32.const 31)
+ (block (result i32)
+ (local.set $4
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (local.tee $1
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.get $0)
+ (i32.const 1048320)
+ )
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 8)
)
- (i32.const 8)
)
)
)
+ (i32.const 520192)
)
- (i32.const 520192)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 4)
)
- (i32.const 4)
)
- )
- (local.set $3
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $0
- (i32.shl
- (local.get $0)
- (local.get $4)
+ (local.set $2
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (local.get $4)
+ )
)
+ (i32.const 245760)
)
- (i32.const 245760)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 2)
)
- (i32.const 2)
)
- )
- (i32.or
- (i32.and
- (i32.shr_u
- (local.get $2)
- (i32.add
- (local.tee $0
- (i32.add
- (i32.sub
- (i32.const 14)
- (i32.or
+ (i32.or
+ (i32.and
+ (i32.shr_u
+ (local.get $3)
+ (i32.add
+ (local.tee $0
+ (i32.add
+ (i32.sub
+ (i32.const 14)
(i32.or
- (local.get $1)
- (local.get $4)
+ (i32.or
+ (local.get $1)
+ (local.get $4)
+ )
+ (local.get $2)
)
- (local.get $3)
)
- )
- (i32.shr_u
- (i32.shl
- (local.get $0)
- (local.get $3)
+ (i32.shr_u
+ (i32.shl
+ (local.get $0)
+ (local.get $2)
+ )
+ (i32.const 15)
)
- (i32.const 15)
)
)
+ (i32.const 7)
)
- (i32.const 7)
)
+ (i32.const 1)
+ )
+ (i32.shl
+ (local.get $0)
+ (i32.const 1)
)
- (i32.const 1)
- )
- (i32.shl
- (local.get $0)
- (i32.const 1)
)
)
)
+ (i32.const 0)
)
- (i32.const 0)
)
- )
- (local.set $3
- (i32.sub
- (i32.const 0)
- (local.get $2)
+ (local.set $2
+ (i32.sub
+ (i32.const 0)
+ (local.get $3)
+ )
)
- )
- (block $__rjto$3
- (block $__rjti$3
- (local.set $0
- (if (result i32)
- (local.tee $0
- (i32.load offset=480
- (i32.shl
- (local.get $14)
- (i32.const 2)
+ (block $__rjto$3
+ (block $__rjti$3
+ (local.set $0
+ (if (result i32)
+ (local.tee $0
+ (i32.load
+ (i32.add
+ (i32.shl
+ (local.get $14)
+ (i32.const 2)
+ )
+ (i32.const 480)
+ )
)
)
- )
- (block (result i32)
- (local.set $9
- (i32.shl
- (local.get $2)
- (select
- (i32.const 0)
- (i32.sub
- (i32.const 25)
- (i32.shr_u
+ (block (result i32)
+ (local.set $8
+ (i32.shl
+ (local.get $3)
+ (select
+ (i32.const 0)
+ (i32.sub
+ (i32.const 25)
+ (i32.shr_u
+ (local.get $14)
+ (i32.const 1)
+ )
+ )
+ (i32.eq
(local.get $14)
- (i32.const 1)
+ (i32.const 31)
)
)
- (i32.eq
- (local.get $14)
- (i32.const 31)
- )
)
)
- )
- (local.set $1
- (i32.const 0)
- )
- (loop $while-in14 (result i32)
- (if
- (i32.lt_u
- (local.tee $4
- (i32.sub
- (local.tee $12
- (i32.and
- (i32.load offset=4
- (local.get $0)
+ (local.set $1
+ (i32.const 0)
+ )
+ (loop $while-in14 (result i32)
+ (if
+ (i32.lt_u
+ (local.tee $4
+ (i32.sub
+ (local.tee $10
+ (i32.and
+ (i32.load
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
+ )
+ (i32.const -8)
)
- (i32.const -8)
)
+ (local.get $3)
)
- (local.get $2)
)
+ (local.get $2)
)
- (local.get $3)
- )
- (local.set $1
- (if (result i32)
- (i32.eq
- (local.get $2)
- (local.get $12)
- )
- (block
- (local.set $1
- (local.get $4)
+ (local.set $1
+ (if (result i32)
+ (i32.eq
+ (local.get $3)
+ (local.get $10)
)
- (local.set $3
- (local.get $0)
+ (block
+ (local.set $1
+ (local.get $4)
+ )
+ (local.set $2
+ (local.get $0)
+ )
+ (br $__rjti$3)
)
- (br $__rjti$3)
- )
- (block (result i32)
- (local.set $3
- (local.get $4)
+ (block (result i32)
+ (local.set $2
+ (local.get $4)
+ )
+ (local.get $0)
)
- (local.get $0)
)
)
)
- )
- (local.set $0
- (select
- (local.get $5)
- (local.tee $4
- (i32.load offset=20
- (local.get $0)
- )
- )
- (i32.or
- (i32.eqz
- (local.get $4)
+ (local.set $0
+ (select
+ (local.get $5)
+ (local.tee $4
+ (i32.load
+ (i32.add
+ (local.get $0)
+ (i32.const 20)
+ )
+ )
)
- (i32.eq
- (local.get $4)
- (local.tee $12
- (i32.load
- (i32.add
+ (i32.or
+ (i32.eqz
+ (local.get $4)
+ )
+ (i32.eq
+ (local.get $4)
+ (local.tee $10
+ (i32.load
(i32.add
- (local.get $0)
- (i32.const 16)
- )
- (i32.shl
- (i32.shr_u
- (local.get $9)
- (i32.const 31)
+ (i32.add
+ (local.get $0)
+ (i32.const 16)
+ )
+ (i32.shl
+ (i32.shr_u
+ (local.get $8)
+ (i32.const 31)
+ )
+ (i32.const 2)
)
- (i32.const 2)
)
)
)
@@ -8967,109 +8900,139 @@
)
)
)
- )
- (local.set $4
- (i32.shl
- (local.get $9)
- (i32.xor
- (local.tee $5
- (i32.eqz
- (local.get $12)
+ (local.set $4
+ (i32.shl
+ (local.get $8)
+ (i32.xor
+ (local.tee $5
+ (i32.eqz
+ (local.get $10)
+ )
)
+ (i32.const 1)
)
- (i32.const 1)
- )
- )
- )
- (if (result i32)
- (local.get $5)
- (block (result i32)
- (local.set $4
- (local.get $0)
)
- (local.get $1)
)
- (block
- (local.set $5
- (local.get $0)
- )
- (local.set $9
- (local.get $4)
+ (if (result i32)
+ (local.get $5)
+ (block (result i32)
+ (local.set $4
+ (local.get $0)
+ )
+ (local.get $1)
)
- (local.set $0
- (local.get $12)
+ (block
+ (local.set $5
+ (local.get $0)
+ )
+ (local.set $8
+ (local.get $4)
+ )
+ (local.set $0
+ (local.get $10)
+ )
+ (br $while-in14)
)
- (br $while-in14)
)
)
)
- )
- (block (result i32)
- (local.set $4
+ (block (result i32)
+ (local.set $4
+ (i32.const 0)
+ )
(i32.const 0)
)
- (i32.const 0)
)
)
- )
- (if
- (i32.eqz
- (i32.or
- (local.get $0)
- (local.get $4)
+ (if
+ (i32.eqz
+ (i32.or
+ (local.get $0)
+ (local.get $4)
+ )
)
- )
- (block
- (drop
- (br_if $do-once
- (local.get $2)
- (i32.eqz
- (local.tee $1
- (i32.and
- (local.get $18)
- (i32.or
- (local.tee $1
- (i32.shl
- (i32.const 2)
- (local.get $14)
+ (block
+ (drop
+ (br_if $do-once
+ (local.get $3)
+ (i32.eqz
+ (local.tee $1
+ (i32.and
+ (local.get $18)
+ (i32.or
+ (local.tee $1
+ (i32.shl
+ (i32.const 2)
+ (local.get $14)
+ )
+ )
+ (i32.sub
+ (i32.const 0)
+ (local.get $1)
)
- )
- (i32.sub
- (i32.const 0)
- (local.get $1)
)
)
)
)
)
)
- )
- (local.set $4
- (i32.load offset=480
- (i32.shl
+ (local.set $4
+ (i32.load
(i32.add
- (i32.or
- (i32.or
+ (i32.shl
+ (i32.add
(i32.or
(i32.or
- (local.tee $1
- (i32.and
- (i32.shr_u
- (local.tee $4
- (i32.add
- (i32.and
- (local.get $1)
- (i32.sub
- (i32.const 0)
+ (i32.or
+ (i32.or
+ (local.tee $1
+ (i32.and
+ (i32.shr_u
+ (local.tee $4
+ (i32.add
+ (i32.and
+ (local.get $1)
+ (i32.sub
+ (i32.const 0)
+ (local.get $1)
+ )
+ )
+ (i32.const -1)
+ )
+ )
+ (i32.const 12)
+ )
+ (i32.const 16)
+ )
+ )
+ (local.tee $1
+ (i32.and
+ (i32.shr_u
+ (local.tee $4
+ (i32.shr_u
+ (local.get $4)
(local.get $1)
)
)
- (i32.const -1)
+ (i32.const 5)
)
+ (i32.const 8)
)
- (i32.const 12)
)
- (i32.const 16)
+ )
+ (local.tee $1
+ (i32.and
+ (i32.shr_u
+ (local.tee $4
+ (i32.shr_u
+ (local.get $4)
+ (local.get $1)
+ )
+ )
+ (i32.const 2)
+ )
+ (i32.const 4)
+ )
)
)
(local.tee $1
@@ -9081,9 +9044,9 @@
(local.get $1)
)
)
- (i32.const 5)
+ (i32.const 1)
)
- (i32.const 8)
+ (i32.const 2)
)
)
)
@@ -9096,1889 +9059,1852 @@
(local.get $1)
)
)
- (i32.const 2)
- )
- (i32.const 4)
- )
- )
- )
- (local.tee $1
- (i32.and
- (i32.shr_u
- (local.tee $4
- (i32.shr_u
- (local.get $4)
- (local.get $1)
- )
+ (i32.const 1)
)
(i32.const 1)
)
- (i32.const 2)
)
)
- )
- (local.tee $1
- (i32.and
- (i32.shr_u
- (local.tee $4
- (i32.shr_u
- (local.get $4)
- (local.get $1)
- )
- )
- (i32.const 1)
- )
- (i32.const 1)
+ (i32.shr_u
+ (local.get $4)
+ (local.get $1)
)
)
+ (i32.const 2)
)
- (i32.shr_u
- (local.get $4)
- (local.get $1)
- )
+ (i32.const 480)
)
- (i32.const 2)
)
)
)
)
- )
- (local.set $4
- (if (result i32)
- (local.get $4)
- (block
- (local.set $1
- (local.get $3)
- )
- (local.set $3
- (local.get $4)
+ (local.set $4
+ (if (result i32)
+ (local.get $4)
+ (block
+ (local.set $1
+ (local.get $2)
+ )
+ (local.set $2
+ (local.get $4)
+ )
+ (br $__rjti$3)
)
- (br $__rjti$3)
+ (local.get $0)
)
- (local.get $0)
)
+ (br $__rjto$3)
)
- (br $__rjto$3)
- )
- (local.set $3
- (loop $while-in16 (result i32)
- (local.set $12
- (i32.lt_u
- (local.tee $4
- (i32.sub
- (i32.and
- (i32.load offset=4
- (local.get $3)
+ (local.set $2
+ (loop $while-in16 (result i32)
+ (local.set $10
+ (i32.lt_u
+ (local.tee $4
+ (i32.sub
+ (i32.and
+ (i32.load
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ )
+ (i32.const -8)
)
- (i32.const -8)
+ (local.get $3)
)
- (local.get $2)
)
+ (local.get $1)
)
- (local.get $1)
- )
- )
- (local.set $1
- (select
- (local.get $4)
- (local.get $1)
- (local.get $12)
)
- )
- (local.set $0
- (select
- (local.get $3)
- (local.get $0)
- (local.get $12)
+ (local.set $1
+ (select
+ (local.get $4)
+ (local.get $1)
+ (local.get $10)
+ )
)
- )
- (if
- (local.tee $4
- (i32.load offset=16
- (local.get $3)
+ (local.set $0
+ (select
+ (local.get $2)
+ (local.get $0)
+ (local.get $10)
)
)
- (block
- (local.set $3
- (local.get $4)
+ (if
+ (local.tee $4
+ (i32.load
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ )
+ )
+ (block
+ (local.set $2
+ (local.get $4)
+ )
+ (br $while-in16)
)
- (br $while-in16)
)
- )
- (br_if $while-in16
- (local.tee $3
- (i32.load offset=20
- (local.get $3)
+ (br_if $while-in16
+ (local.tee $2
+ (i32.load
+ (i32.add
+ (local.get $2)
+ (i32.const 20)
+ )
+ )
)
)
+ (local.set $4
+ (local.get $0)
+ )
+ (local.get $1)
)
- (local.set $4
- (local.get $0)
- )
- (local.get $1)
)
)
- )
- (if (result i32)
- (local.get $4)
(if (result i32)
- (i32.lt_u
- (local.get $3)
- (i32.sub
- (i32.load
- (i32.const 184)
- )
+ (local.get $4)
+ (if (result i32)
+ (i32.lt_u
(local.get $2)
- )
- )
- (block
- (if
- (i32.lt_u
- (local.get $4)
- (local.tee $8
- (i32.load
- (i32.const 192)
- )
+ (i32.sub
+ (i32.load
+ (i32.const 184)
)
+ (local.get $3)
)
- (call $_abort)
)
- (if
- (i32.ge_u
- (local.get $4)
- (local.tee $5
- (i32.add
- (local.get $2)
- (local.get $4)
+ (block
+ (if
+ (i32.lt_u
+ (local.get $4)
+ (local.tee $11
+ (i32.load
+ (i32.const 192)
+ )
)
)
+ (call $_abort)
)
- (call $_abort)
- )
- (local.set $12
- (i32.load offset=24
- (local.get $4)
+ (if
+ (i32.ge_u
+ (local.get $4)
+ (local.tee $5
+ (i32.add
+ (local.get $3)
+ (local.get $4)
+ )
+ )
+ )
+ (call $_abort)
)
- )
- (if
- (i32.eq
- (local.tee $0
- (i32.load offset=12
+ (local.set $10
+ (i32.load
+ (i32.add
(local.get $4)
+ (i32.const 24)
)
)
- (local.get $4)
)
- (block $do-once17
- (if
- (i32.eqz
- (local.tee $1
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $4)
- (i32.const 20)
- )
- )
+ (if
+ (i32.eq
+ (local.tee $0
+ (i32.load
+ (i32.add
+ (local.get $4)
+ (i32.const 12)
)
)
)
- (br_if $do-once17
+ (local.get $4)
+ )
+ (block $do-once17
+ (if
(i32.eqz
(local.tee $1
(i32.load
(local.tee $0
(i32.add
(local.get $4)
- (i32.const 16)
+ (i32.const 20)
)
)
)
)
)
- )
- )
- (loop $while-in20
- (if
- (local.tee $7
- (i32.load
- (local.tee $11
- (i32.add
- (local.get $1)
- (i32.const 20)
+ (br_if $do-once17
+ (i32.eqz
+ (local.tee $1
+ (i32.load
+ (local.tee $0
+ (i32.add
+ (local.get $4)
+ (i32.const 16)
+ )
+ )
)
)
)
)
- (block
- (local.set $1
- (local.get $7)
- )
- (local.set $0
- (local.get $11)
- )
- (br $while-in20)
- )
)
- (if
- (local.tee $7
- (i32.load
- (local.tee $11
- (i32.add
- (local.get $1)
- (i32.const 16)
+ (loop $while-in20
+ (if
+ (local.tee $7
+ (i32.load
+ (local.tee $9
+ (i32.add
+ (local.get $1)
+ (i32.const 20)
+ )
)
)
)
+ (block
+ (local.set $1
+ (local.get $7)
+ )
+ (local.set $0
+ (local.get $9)
+ )
+ (br $while-in20)
+ )
)
- (block
- (local.set $1
- (local.get $7)
+ (if
+ (local.tee $7
+ (i32.load
+ (local.tee $9
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
+ )
+ )
)
- (local.set $0
- (local.get $11)
+ (block
+ (local.set $1
+ (local.get $7)
+ )
+ (local.set $0
+ (local.get $9)
+ )
+ (br $while-in20)
)
- (br $while-in20)
)
)
- )
- (if
- (i32.lt_u
- (local.get $0)
- (local.get $8)
- )
- (call $_abort)
- (block
- (i32.store
+ (if
+ (i32.lt_u
(local.get $0)
- (i32.const 0)
- )
- (local.set $10
- (local.get $1)
+ (local.get $11)
)
- )
- )
- )
- (block
- (if
- (i32.lt_u
- (local.tee $11
- (i32.load offset=8
- (local.get $4)
+ (call $_abort)
+ (block
+ (i32.store
+ (local.get $0)
+ (i32.const 0)
)
- )
- (local.get $8)
- )
- (call $_abort)
- )
- (if
- (i32.ne
- (local.get $4)
- (i32.load
- (local.tee $7
- (i32.add
- (local.get $11)
- (i32.const 12)
- )
+ (local.set $12
+ (local.get $1)
)
)
)
- (call $_abort)
)
- (if
- (i32.eq
- (i32.load
+ (block
+ (if
+ (i32.lt_u
(local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 8)
+ (i32.load
+ (i32.add
+ (local.get $4)
+ (i32.const 8)
+ )
)
)
+ (local.get $11)
)
- (local.get $4)
+ (call $_abort)
)
- (block
- (i32.store
- (local.get $7)
- (local.get $0)
+ (if
+ (i32.ne
+ (local.get $4)
+ (i32.load offset=12
+ (local.get $1)
+ )
)
- (i32.store
- (local.get $1)
- (local.get $11)
+ (call $_abort)
+ )
+ (if
+ (i32.eq
+ (i32.load offset=8
+ (local.get $0)
+ )
+ (local.get $4)
)
- (local.set $10
- (local.get $0)
+ (block
+ (i32.store offset=12
+ (local.get $1)
+ (local.get $0)
+ )
+ (i32.store offset=8
+ (local.get $0)
+ (local.get $1)
+ )
+ (local.set $12
+ (local.get $0)
+ )
)
+ (call $_abort)
)
- (call $_abort)
)
)
- )
- (if
- (local.get $12)
- (block $do-once21
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (i32.shl
- (local.tee $1
- (i32.load offset=28
- (local.get $4)
+ (if
+ (local.get $10)
+ (block $do-once21
+ (if
+ (i32.eq
+ (i32.load
+ (local.tee $0
+ (i32.add
+ (i32.shl
+ (local.tee $1
+ (i32.load
+ (i32.add
+ (local.get $4)
+ (i32.const 28)
+ )
+ )
)
+ (i32.const 2)
)
- (i32.const 2)
+ (i32.const 480)
)
- (i32.const 480)
)
)
+ (local.get $4)
)
- (local.get $4)
- )
- (block
- (i32.store
- (local.get $0)
- (local.get $10)
- )
- (if
- (i32.eqz
- (local.get $10)
+ (block
+ (i32.store
+ (local.get $0)
+ (local.get $12)
)
- (block
- (i32.store
- (i32.const 180)
- (i32.and
- (i32.load
- (i32.const 180)
- )
- (i32.xor
- (i32.shl
- (i32.const 1)
- (local.get $1)
+ (if
+ (i32.eqz
+ (local.get $12)
+ )
+ (block
+ (i32.store
+ (i32.const 180)
+ (i32.and
+ (i32.load
+ (i32.const 180)
+ )
+ (i32.xor
+ (i32.shl
+ (i32.const 1)
+ (local.get $1)
+ )
+ (i32.const -1)
)
- (i32.const -1)
)
)
+ (br $do-once21)
)
- (br $do-once21)
)
)
- )
- (block
- (if
- (i32.lt_u
- (local.get $12)
- (i32.load
- (i32.const 192)
+ (block
+ (if
+ (i32.lt_u
+ (local.get $10)
+ (i32.load
+ (i32.const 192)
+ )
)
+ (call $_abort)
)
- (call $_abort)
- )
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $12)
- (i32.const 16)
- )
+ (if
+ (i32.eq
+ (i32.load offset=16
+ (local.get $10)
)
+ (local.get $4)
+ )
+ (i32.store offset=16
+ (local.get $10)
+ (local.get $12)
+ )
+ (i32.store offset=20
+ (local.get $10)
+ (local.get $12)
)
- (local.get $4)
- )
- (i32.store
- (local.get $0)
- (local.get $10)
- )
- (i32.store offset=20
- (local.get $12)
- (local.get $10)
)
- )
- (br_if $do-once21
- (i32.eqz
- (local.get $10)
+ (br_if $do-once21
+ (i32.eqz
+ (local.get $12)
+ )
)
)
)
- )
- (if
- (i32.lt_u
- (local.get $10)
- (local.tee $0
- (i32.load
- (i32.const 192)
+ (if
+ (i32.lt_u
+ (local.get $12)
+ (local.tee $0
+ (i32.load
+ (i32.const 192)
+ )
)
)
+ (call $_abort)
)
- (call $_abort)
- )
- (i32.store offset=24
- (local.get $10)
- (local.get $12)
- )
- (if
- (local.tee $1
- (i32.load offset=16
- (local.get $4)
+ (i32.store
+ (i32.add
+ (local.get $12)
+ (i32.const 24)
)
+ (local.get $10)
)
(if
- (i32.lt_u
- (local.get $1)
- (local.get $0)
+ (local.tee $1
+ (i32.load
+ (i32.add
+ (local.get $4)
+ (i32.const 16)
+ )
+ )
)
- (call $_abort)
- (block
- (i32.store offset=16
- (local.get $10)
+ (if
+ (i32.lt_u
(local.get $1)
+ (local.get $0)
)
- (i32.store offset=24
- (local.get $1)
- (local.get $10)
+ (call $_abort)
+ (block
+ (i32.store
+ (i32.add
+ (local.get $12)
+ (i32.const 16)
+ )
+ (local.get $1)
+ )
+ (i32.store offset=24
+ (local.get $1)
+ (local.get $12)
+ )
)
)
)
- )
- (if
- (local.tee $0
- (i32.load offset=20
- (local.get $4)
- )
- )
(if
- (i32.lt_u
- (local.get $0)
+ (local.tee $0
(i32.load
- (i32.const 192)
+ (i32.add
+ (local.get $4)
+ (i32.const 20)
+ )
)
)
- (call $_abort)
- (block
- (i32.store offset=20
- (local.get $10)
+ (if
+ (i32.lt_u
(local.get $0)
+ (i32.load
+ (i32.const 192)
+ )
)
- (i32.store offset=24
- (local.get $0)
- (local.get $10)
+ (call $_abort)
+ (block
+ (i32.store
+ (i32.add
+ (local.get $12)
+ (i32.const 20)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=24
+ (local.get $0)
+ (local.get $12)
+ )
)
)
)
)
)
- )
- (if
- (i32.lt_u
- (local.get $3)
- (i32.const 16)
- )
- (block
- (i32.store offset=4
- (local.get $4)
- (i32.or
- (local.tee $0
- (i32.add
- (local.get $2)
- (local.get $3)
+ (if
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 16)
+ )
+ (block
+ (i32.store
+ (i32.add
+ (local.get $4)
+ (i32.const 4)
+ )
+ (i32.or
+ (local.tee $0
+ (i32.add
+ (local.get $2)
+ (local.get $3)
+ )
)
+ (i32.const 3)
)
- (i32.const 3)
)
- )
- (i32.store
- (local.tee $0
- (i32.add
+ (i32.store offset=4
+ (local.tee $0
(i32.add
(local.get $0)
(local.get $4)
)
- (i32.const 4)
)
- )
- (i32.or
- (i32.load
- (local.get $0)
+ (i32.or
+ (i32.load offset=4
+ (local.get $0)
+ )
+ (i32.const 1)
)
- (i32.const 1)
- )
- )
- )
- (block $do-once25
- (i32.store offset=4
- (local.get $4)
- (i32.or
- (local.get $2)
- (i32.const 3)
)
)
- (i32.store offset=4
- (local.get $5)
- (i32.or
- (local.get $3)
- (i32.const 1)
+ (block $do-once25
+ (i32.store
+ (i32.add
+ (local.get $4)
+ (i32.const 4)
+ )
+ (i32.or
+ (local.get $3)
+ (i32.const 3)
+ )
)
- )
- (i32.store
- (i32.add
- (local.get $3)
+ (i32.store offset=4
(local.get $5)
+ (i32.or
+ (local.get $2)
+ (i32.const 1)
+ )
)
- (local.get $3)
- )
- (local.set $0
- (i32.shr_u
- (local.get $3)
- (i32.const 3)
+ (i32.store
+ (i32.add
+ (local.get $2)
+ (local.get $5)
+ )
+ (local.get $2)
)
- )
- (if
- (i32.lt_u
- (local.get $3)
- (i32.const 256)
+ (local.set $0
+ (i32.shr_u
+ (local.get $2)
+ (i32.const 3)
+ )
)
- (block
- (local.set $3
- (i32.add
- (i32.shl
- (local.get $0)
- (i32.const 3)
- )
- (i32.const 216)
- )
+ (if
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 256)
)
- (if
- (i32.and
- (local.tee $1
- (i32.load
- (i32.const 176)
- )
- )
- (local.tee $0
+ (block
+ (local.set $2
+ (i32.add
(i32.shl
- (i32.const 1)
(local.get $0)
+ (i32.const 3)
)
+ (i32.const 216)
)
)
(if
- (i32.lt_u
- (local.tee $0
+ (i32.and
+ (local.tee $1
(i32.load
- (local.tee $1
- (i32.add
- (local.get $3)
- (i32.const 8)
+ (i32.const 176)
+ )
+ )
+ (local.tee $0
+ (i32.shl
+ (i32.const 1)
+ (local.get $0)
+ )
+ )
+ )
+ (block
+ (local.set $1
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ )
+ (if
+ (i32.lt_u
+ (local.tee $0
+ (i32.load offset=8
+ (local.get $2)
)
)
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ (call $_abort)
+ (block
+ (local.set $13
+ (local.get $1)
+ )
+ (local.set $6
+ (local.get $0)
+ )
)
- )
- (i32.load
- (i32.const 192)
)
)
- (call $_abort)
(block
+ (i32.store
+ (i32.const 176)
+ (i32.or
+ (local.get $0)
+ (local.get $1)
+ )
+ )
(local.set $13
- (local.get $1)
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
)
(local.set $6
- (local.get $0)
+ (local.get $2)
)
)
)
- (block
- (i32.store
- (i32.const 176)
- (i32.or
- (local.get $0)
- (local.get $1)
- )
- )
- (local.set $13
- (i32.add
- (local.get $3)
- (i32.const 8)
- )
- )
- (local.set $6
- (local.get $3)
+ (i32.store
+ (local.get $13)
+ (local.get $5)
+ )
+ (i32.store
+ (i32.add
+ (local.get $6)
+ (i32.const 12)
)
+ (local.get $5)
)
+ (i32.store offset=8
+ (local.get $5)
+ (local.get $6)
+ )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $2)
+ )
+ (br $do-once25)
)
- (i32.store
- (local.get $13)
- (local.get $5)
- )
- (i32.store offset=12
- (local.get $6)
- (local.get $5)
- )
- (i32.store offset=8
- (local.get $5)
- (local.get $6)
- )
- (i32.store offset=12
- (local.get $5)
- (local.get $3)
- )
- (br $do-once25)
)
- )
- (local.set $2
- (i32.add
- (i32.shl
- (local.tee $7
- (if (result i32)
- (local.tee $0
- (i32.shr_u
- (local.get $3)
- (i32.const 8)
- )
- )
+ (local.set $3
+ (i32.add
+ (i32.shl
+ (local.tee $7
(if (result i32)
- (i32.gt_u
- (local.get $3)
- (i32.const 16777215)
+ (local.tee $0
+ (i32.shr_u
+ (local.get $2)
+ (i32.const 8)
+ )
)
- (i32.const 31)
- (block (result i32)
- (local.set $7
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $0
- (i32.shl
- (local.get $0)
- (local.tee $1
- (i32.and
- (i32.shr_u
- (i32.add
- (local.get $0)
- (i32.const 1048320)
+ (if (result i32)
+ (i32.gt_u
+ (local.get $2)
+ (i32.const 16777215)
+ )
+ (i32.const 31)
+ (block (result i32)
+ (local.set $7
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (local.tee $1
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.get $0)
+ (i32.const 1048320)
+ )
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 8)
)
- (i32.const 8)
)
)
)
+ (i32.const 520192)
)
- (i32.const 520192)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 4)
)
- (i32.const 4)
)
- )
- (local.set $2
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $0
- (i32.shl
- (local.get $0)
- (local.get $7)
+ (local.set $3
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (local.get $7)
+ )
)
+ (i32.const 245760)
)
- (i32.const 245760)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 2)
)
- (i32.const 2)
)
- )
- (i32.or
- (i32.and
- (i32.shr_u
- (local.get $3)
- (i32.add
- (local.tee $0
- (i32.add
- (i32.sub
- (i32.const 14)
- (i32.or
+ (i32.or
+ (i32.and
+ (i32.shr_u
+ (local.get $2)
+ (i32.add
+ (local.tee $0
+ (i32.add
+ (i32.sub
+ (i32.const 14)
(i32.or
- (local.get $1)
- (local.get $7)
+ (i32.or
+ (local.get $1)
+ (local.get $7)
+ )
+ (local.get $3)
)
- (local.get $2)
)
- )
- (i32.shr_u
- (i32.shl
- (local.get $0)
- (local.get $2)
+ (i32.shr_u
+ (i32.shl
+ (local.get $0)
+ (local.get $3)
+ )
+ (i32.const 15)
)
- (i32.const 15)
)
)
+ (i32.const 7)
)
- (i32.const 7)
)
+ (i32.const 1)
+ )
+ (i32.shl
+ (local.get $0)
+ (i32.const 1)
)
- (i32.const 1)
- )
- (i32.shl
- (local.get $0)
- (i32.const 1)
)
)
)
+ (i32.const 0)
)
- (i32.const 0)
)
+ (i32.const 2)
)
- (i32.const 2)
+ (i32.const 480)
)
- (i32.const 480)
)
- )
- (i32.store offset=28
- (local.get $5)
- (local.get $7)
- )
- (i32.store offset=4
- (local.tee $0
+ (i32.store offset=28
+ (local.get $5)
+ (local.get $7)
+ )
+ (i32.store offset=4
(i32.add
(local.get $5)
(i32.const 16)
)
+ (i32.const 0)
)
- (i32.const 0)
- )
- (i32.store
- (local.get $0)
- (i32.const 0)
- )
- (if
- (i32.eqz
- (i32.and
- (local.tee $1
- (i32.load
- (i32.const 180)
+ (i32.store offset=16
+ (local.get $5)
+ (i32.const 0)
+ )
+ (if
+ (i32.eqz
+ (i32.and
+ (local.tee $1
+ (i32.load
+ (i32.const 180)
+ )
)
- )
- (local.tee $0
- (i32.shl
- (i32.const 1)
- (local.get $7)
+ (local.tee $0
+ (i32.shl
+ (i32.const 1)
+ (local.get $7)
+ )
)
)
)
- )
- (block
- (i32.store
- (i32.const 180)
- (i32.or
- (local.get $0)
- (local.get $1)
+ (block
+ (i32.store
+ (i32.const 180)
+ (i32.or
+ (local.get $0)
+ (local.get $1)
+ )
)
+ (i32.store
+ (local.get $3)
+ (local.get $5)
+ )
+ (i32.store offset=24
+ (local.get $5)
+ (local.get $3)
+ )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $5)
+ )
+ (i32.store offset=8
+ (local.get $5)
+ (local.get $5)
+ )
+ (br $do-once25)
)
- (i32.store
- (local.get $2)
- (local.get $5)
- )
- (i32.store offset=24
- (local.get $5)
- (local.get $2)
- )
- (i32.store offset=12
- (local.get $5)
- (local.get $5)
- )
- (i32.store offset=8
- (local.get $5)
- (local.get $5)
- )
- (br $do-once25)
)
- )
- (local.set $7
- (i32.shl
- (local.get $3)
- (select
- (i32.const 0)
- (i32.sub
- (i32.const 25)
- (i32.shr_u
+ (local.set $7
+ (i32.shl
+ (local.get $2)
+ (select
+ (i32.const 0)
+ (i32.sub
+ (i32.const 25)
+ (i32.shr_u
+ (local.get $7)
+ (i32.const 1)
+ )
+ )
+ (i32.eq
(local.get $7)
- (i32.const 1)
+ (i32.const 31)
)
)
- (i32.eq
- (local.get $7)
- (i32.const 31)
- )
)
)
- )
- (local.set $0
- (i32.load
- (local.get $2)
+ (local.set $0
+ (i32.load
+ (local.get $3)
+ )
)
- )
- (block $__rjto$1
- (block $__rjti$1
- (loop $while-in28
- (br_if $__rjti$1
- (i32.eq
- (i32.and
- (i32.load offset=4
- (local.get $0)
+ (block $__rjto$1
+ (block $__rjti$1
+ (loop $while-in28
+ (br_if $__rjti$1
+ (i32.eq
+ (i32.and
+ (i32.load
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
+ )
+ (i32.const -8)
)
- (i32.const -8)
+ (local.get $2)
)
- (local.get $3)
)
- )
- (local.set $2
- (i32.shl
- (local.get $7)
- (i32.const 1)
+ (local.set $3
+ (i32.shl
+ (local.get $7)
+ (i32.const 1)
+ )
)
- )
- (if
- (local.tee $1
- (i32.load
- (local.tee $7
- (i32.add
+ (if
+ (local.tee $1
+ (i32.load
+ (local.tee $7
(i32.add
- (local.get $0)
- (i32.const 16)
- )
- (i32.shl
- (i32.shr_u
- (local.get $7)
- (i32.const 31)
+ (i32.add
+ (local.get $0)
+ (i32.const 16)
+ )
+ (i32.shl
+ (i32.shr_u
+ (local.get $7)
+ (i32.const 31)
+ )
+ (i32.const 2)
)
- (i32.const 2)
)
)
)
)
+ (block
+ (local.set $7
+ (local.get $3)
+ )
+ (local.set $0
+ (local.get $1)
+ )
+ (br $while-in28)
+ )
+ )
+ )
+ (if
+ (i32.lt_u
+ (local.get $7)
+ (i32.load
+ (i32.const 192)
+ )
)
+ (call $_abort)
(block
- (local.set $7
- (local.get $2)
+ (i32.store
+ (local.get $7)
+ (local.get $5)
)
- (local.set $0
- (local.get $1)
+ (i32.store offset=24
+ (local.get $5)
+ (local.get $0)
+ )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $5)
)
- (br $while-in28)
+ (i32.store offset=8
+ (local.get $5)
+ (local.get $5)
+ )
+ (br $do-once25)
)
)
+ (br $__rjto$1)
)
(if
- (i32.lt_u
- (local.get $7)
- (i32.load
- (i32.const 192)
+ (i32.and
+ (i32.ge_u
+ (local.tee $2
+ (i32.load offset=8
+ (local.get $0)
+ )
+ )
+ (local.tee $1
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ )
+ (i32.ge_u
+ (local.get $0)
+ (local.get $1)
)
)
- (call $_abort)
(block
- (i32.store
- (local.get $7)
+ (i32.store offset=12
+ (local.get $2)
(local.get $5)
)
- (i32.store offset=24
- (local.get $5)
+ (i32.store offset=8
(local.get $0)
- )
- (i32.store offset=12
- (local.get $5)
(local.get $5)
)
(i32.store offset=8
(local.get $5)
- (local.get $5)
+ (local.get $2)
)
- (br $do-once25)
- )
- )
- (br $__rjto$1)
- )
- (if
- (i32.and
- (i32.ge_u
- (local.tee $2
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
- )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $0)
)
- (local.tee $1
- (i32.load
- (i32.const 192)
- )
+ (i32.store offset=24
+ (local.get $5)
+ (i32.const 0)
)
)
- (i32.ge_u
- (local.get $0)
- (local.get $1)
- )
- )
- (block
- (i32.store offset=12
- (local.get $2)
- (local.get $5)
- )
- (i32.store
- (local.get $3)
- (local.get $5)
- )
- (i32.store offset=8
- (local.get $5)
- (local.get $2)
- )
- (i32.store offset=12
- (local.get $5)
- (local.get $0)
- )
- (i32.store offset=24
- (local.get $5)
- (i32.const 0)
- )
+ (call $_abort)
)
- (call $_abort)
)
)
)
- )
- (return
- (i32.add
- (local.get $4)
- (i32.const 8)
+ (return
+ (i32.add
+ (local.get $4)
+ (i32.const 8)
+ )
)
)
+ (local.get $3)
)
- (local.get $2)
+ (local.get $3)
)
- (local.get $2)
)
+ (local.get $3)
)
- (local.get $2)
)
)
)
)
- )
- (if
- (i32.ge_u
- (local.tee $1
- (i32.load
- (i32.const 184)
- )
- )
- (local.get $0)
- )
- (block
- (local.set $2
- (i32.load
- (i32.const 196)
+ (if
+ (i32.ge_u
+ (local.tee $1
+ (i32.load
+ (i32.const 184)
+ )
)
+ (local.get $0)
)
- (if
- (i32.gt_u
- (local.tee $3
- (i32.sub
- (local.get $1)
- (local.get $0)
- )
+ (block
+ (local.set $3
+ (i32.load
+ (i32.const 196)
)
- (i32.const 15)
)
- (block
- (i32.store
- (i32.const 196)
- (local.tee $1
- (i32.add
+ (if
+ (i32.gt_u
+ (local.tee $2
+ (i32.sub
+ (local.get $1)
(local.get $0)
- (local.get $2)
)
)
+ (i32.const 15)
)
- (i32.store
- (i32.const 184)
- (local.get $3)
- )
- (i32.store offset=4
- (local.get $1)
- (i32.or
- (local.get $3)
- (i32.const 1)
+ (block
+ (i32.store
+ (i32.const 196)
+ (local.tee $1
+ (i32.add
+ (local.get $0)
+ (local.get $3)
+ )
+ )
)
- )
- (i32.store
- (i32.add
+ (i32.store
+ (i32.const 184)
+ (local.get $2)
+ )
+ (i32.store offset=4
(local.get $1)
+ (i32.or
+ (local.get $2)
+ (i32.const 1)
+ )
+ )
+ (i32.store
+ (i32.add
+ (local.get $1)
+ (local.get $2)
+ )
+ (local.get $2)
+ )
+ (i32.store offset=4
(local.get $3)
+ (i32.or
+ (local.get $0)
+ (i32.const 3)
+ )
)
- (local.get $3)
)
- (i32.store offset=4
- (local.get $2)
- (i32.or
- (local.get $0)
- (i32.const 3)
+ (block
+ (i32.store
+ (i32.const 184)
+ (i32.const 0)
)
- )
- )
- (block
- (i32.store
- (i32.const 184)
- (i32.const 0)
- )
- (i32.store
- (i32.const 196)
- (i32.const 0)
- )
- (i32.store offset=4
- (local.get $2)
- (i32.or
- (local.get $1)
- (i32.const 3)
+ (i32.store
+ (i32.const 196)
+ (i32.const 0)
)
- )
- (i32.store
- (local.tee $0
- (i32.add
+ (i32.store offset=4
+ (local.get $3)
+ (i32.or
+ (local.get $1)
+ (i32.const 3)
+ )
+ )
+ (i32.store offset=4
+ (local.tee $0
(i32.add
(local.get $1)
- (local.get $2)
+ (local.get $3)
)
- (i32.const 4)
)
- )
- (i32.or
- (i32.load
- (local.get $0)
+ (i32.or
+ (i32.load offset=4
+ (local.get $0)
+ )
+ (i32.const 1)
)
- (i32.const 1)
)
)
)
- )
- (return
- (i32.add
- (local.get $2)
- (i32.const 8)
- )
+ (br $folding-inner1)
)
)
- )
- (block $folding-inner0
- (br_if $folding-inner0
- (i32.gt_u
- (local.tee $1
- (i32.load
- (i32.const 188)
+ (block $folding-inner0
+ (br_if $folding-inner0
+ (i32.gt_u
+ (local.tee $1
+ (i32.load
+ (i32.const 188)
+ )
)
- )
- (local.get $0)
- )
- )
- (if
- (i32.eqz
- (i32.load
- (i32.const 648)
+ (local.get $0)
)
)
(if
- (i32.and
- (local.tee $1
- (call $_sysconf
- (i32.const 30)
- )
- )
- (i32.add
- (local.get $1)
- (i32.const -1)
+ (i32.eqz
+ (i32.load
+ (i32.const 648)
)
)
- (call $_abort)
- (block
- (i32.store
- (i32.const 656)
- (local.get $1)
- )
- (i32.store
- (i32.const 652)
- (local.get $1)
- )
- (i32.store
- (i32.const 660)
- (i32.const -1)
- )
- (i32.store
- (i32.const 664)
- (i32.const -1)
- )
- (i32.store
- (i32.const 668)
- (i32.const 0)
- )
- (i32.store
- (i32.const 620)
- (i32.const 0)
+ (if
+ (i32.and
+ (local.tee $1
+ (call $_sysconf
+ (i32.const 30)
+ )
+ )
+ (i32.add
+ (local.get $1)
+ (i32.const -1)
+ )
)
- (i32.store
- (i32.const 648)
- (i32.xor
- (i32.and
- (call $_time
- (i32.const 0)
+ (call $_abort)
+ (block
+ (i32.store
+ (i32.const 656)
+ (local.get $1)
+ )
+ (i32.store
+ (i32.const 652)
+ (local.get $1)
+ )
+ (i32.store
+ (i32.const 660)
+ (i32.const -1)
+ )
+ (i32.store
+ (i32.const 664)
+ (i32.const -1)
+ )
+ (i32.store
+ (i32.const 668)
+ (i32.const 0)
+ )
+ (i32.store
+ (i32.const 620)
+ (i32.const 0)
+ )
+ (i32.store
+ (i32.const 648)
+ (i32.xor
+ (i32.and
+ (call $_time
+ (i32.const 0)
+ )
+ (i32.const -16)
)
- (i32.const -16)
+ (i32.const 1431655768)
)
- (i32.const 1431655768)
)
)
)
)
- )
- (if
- (i32.le_u
- (local.tee $6
- (i32.and
- (local.tee $5
- (i32.add
- (local.tee $1
- (i32.load
- (i32.const 656)
+ (if
+ (i32.le_u
+ (local.tee $6
+ (i32.and
+ (local.tee $5
+ (i32.add
+ (local.tee $1
+ (i32.load
+ (i32.const 656)
+ )
)
- )
- (local.tee $9
- (i32.add
- (local.get $0)
- (i32.const 47)
+ (local.tee $8
+ (i32.add
+ (local.get $0)
+ (i32.const 47)
+ )
)
)
)
- )
- (local.tee $12
- (i32.sub
- (i32.const 0)
- (local.get $1)
+ (local.tee $10
+ (i32.sub
+ (i32.const 0)
+ (local.get $1)
+ )
)
)
)
+ (local.get $0)
)
- (local.get $0)
- )
- (return
- (i32.const 0)
- )
- )
- (if
- (local.tee $2
- (i32.load
- (i32.const 616)
+ (return
+ (i32.const 0)
)
)
(if
- (i32.or
- (i32.le_u
- (local.tee $1
- (i32.add
- (local.tee $3
- (i32.load
- (i32.const 608)
+ (local.tee $3
+ (i32.load
+ (i32.const 616)
+ )
+ )
+ (if
+ (i32.or
+ (i32.le_u
+ (local.tee $1
+ (i32.add
+ (local.tee $2
+ (i32.load
+ (i32.const 608)
+ )
)
+ (local.get $6)
)
- (local.get $6)
)
+ (local.get $2)
+ )
+ (i32.gt_u
+ (local.get $1)
+ (local.get $3)
)
- (local.get $3)
)
- (i32.gt_u
- (local.get $1)
- (local.get $2)
+ (return
+ (i32.const 0)
)
)
- (return
- (i32.const 0)
- )
)
- )
- (local.set $10
- (i32.add
- (local.get $0)
- (i32.const 48)
+ (local.set $12
+ (i32.add
+ (local.get $0)
+ (i32.const 48)
+ )
)
- )
- (block $__rjto$13
- (block $__rjti$13
- (if
- (i32.eqz
- (i32.and
- (i32.load
- (i32.const 620)
+ (block $__rjto$13
+ (block $__rjti$13
+ (if
+ (i32.eqz
+ (i32.and
+ (i32.load
+ (i32.const 620)
+ )
+ (i32.const 4)
)
- (i32.const 4)
)
- )
- (block
- (block $label$break$L279
- (block $__rjti$5
- (block $__rjti$4
- (br_if $__rjti$4
- (i32.eqz
- (local.tee $4
- (i32.load
- (i32.const 200)
+ (block
+ (block $label$break$L279
+ (block $__rjti$5
+ (block $__rjti$4
+ (br_if $__rjti$4
+ (i32.eqz
+ (local.tee $4
+ (i32.load
+ (i32.const 200)
+ )
)
)
)
- )
- (local.set $1
- (i32.const 624)
- )
- (loop $while-in34
- (block $while-out33
- (if
- (i32.le_u
- (local.tee $3
- (i32.load
- (local.get $1)
- )
- )
- (local.get $4)
- )
+ (local.set $1
+ (i32.const 624)
+ )
+ (loop $while-in34
+ (block $while-out33
(if
- (i32.gt_u
- (i32.add
- (local.get $3)
+ (i32.le_u
+ (local.tee $2
(i32.load
- (local.tee $2
- (i32.add
- (local.get $1)
- (i32.const 4)
- )
- )
+ (local.get $1)
)
)
(local.get $4)
)
- (block
- (local.set $4
- (local.get $1)
+ (if
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.load
+ (local.tee $3
+ (i32.add
+ (local.get $1)
+ (i32.const 4)
+ )
+ )
+ )
+ )
+ (local.get $4)
+ )
+ (block
+ (local.set $4
+ (local.get $1)
+ )
+ (br $while-out33)
)
- (br $while-out33)
- )
- )
- )
- (br_if $while-in34
- (local.tee $1
- (i32.load offset=8
- (local.get $1)
)
)
- )
- (br $__rjti$4)
- )
- )
- (if
- (i32.lt_u
- (local.tee $3
- (i32.and
- (i32.sub
- (local.get $5)
+ (br_if $while-in34
+ (local.tee $1
(i32.load
- (i32.const 188)
+ (i32.add
+ (local.get $1)
+ (i32.const 8)
+ )
)
)
- (local.get $12)
)
+ (br $__rjti$4)
)
- (i32.const 2147483647)
)
- (block
- (local.set $1
- (call $_sbrk
- (local.get $3)
- )
- )
- (if
- (i32.eq
- (i32.add
- (i32.load
- (local.get $4)
- )
- (i32.load
- (local.get $2)
+ (if
+ (i32.lt_u
+ (local.tee $2
+ (i32.and
+ (i32.sub
+ (local.get $5)
+ (i32.load
+ (i32.const 188)
+ )
)
+ (local.get $10)
)
- (local.get $1)
)
- (br_if $__rjti$13
- (i32.ne
- (local.get $1)
- (i32.const -1)
+ (i32.const 2147483647)
+ )
+ (block
+ (local.set $1
+ (call $_sbrk
+ (local.get $2)
)
)
- (block
- (local.set $2
+ (if
+ (i32.eq
+ (i32.add
+ (i32.load
+ (local.get $4)
+ )
+ (i32.load
+ (local.get $3)
+ )
+ )
(local.get $1)
)
- (br $__rjti$5)
+ (br_if $__rjti$13
+ (i32.ne
+ (local.get $1)
+ (i32.const -1)
+ )
+ )
+ (block
+ (local.set $3
+ (local.get $1)
+ )
+ (br $__rjti$5)
+ )
)
)
)
+ (br $label$break$L279)
)
- (br $label$break$L279)
- )
- (if
- (i32.ne
- (local.tee $1
- (call $_sbrk
- (i32.const 0)
+ (if
+ (i32.ne
+ (local.tee $1
+ (call $_sbrk
+ (i32.const 0)
+ )
)
+ (i32.const -1)
)
- (i32.const -1)
- )
- (block
- (local.set $3
- (if (result i32)
- (i32.and
- (local.tee $3
- (local.get $1)
- )
- (local.tee $2
- (i32.add
- (local.tee $4
- (i32.load
- (i32.const 652)
+ (block
+ (local.set $2
+ (if (result i32)
+ (i32.and
+ (local.tee $2
+ (local.get $1)
+ )
+ (local.tee $3
+ (i32.add
+ (local.tee $4
+ (i32.load
+ (i32.const 652)
+ )
)
+ (i32.const -1)
)
- (i32.const -1)
)
)
- )
- (i32.add
- (i32.sub
- (local.get $6)
- (local.get $3)
- )
- (i32.and
- (i32.add
+ (i32.add
+ (i32.sub
+ (local.get $6)
(local.get $2)
- (local.get $3)
)
- (i32.sub
- (i32.const 0)
- (local.get $4)
+ (i32.and
+ (i32.add
+ (local.get $2)
+ (local.get $3)
+ )
+ (i32.sub
+ (i32.const 0)
+ (local.get $4)
+ )
)
)
+ (local.get $6)
)
- (local.get $6)
)
- )
- (local.set $12
- (i32.add
- (local.tee $4
- (i32.load
- (i32.const 608)
+ (local.set $10
+ (i32.add
+ (local.tee $4
+ (i32.load
+ (i32.const 608)
+ )
)
- )
- (local.get $3)
- )
- )
- (if
- (i32.and
- (i32.lt_u
- (local.get $3)
- (i32.const 2147483647)
- )
- (i32.gt_u
- (local.get $3)
- (local.get $0)
+ (local.get $2)
)
)
- (block
- (if
- (local.tee $2
- (i32.load
- (i32.const 616)
- )
+ (if
+ (i32.and
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 2147483647)
)
- (br_if $label$break$L279
- (i32.or
- (i32.le_u
- (local.get $12)
- (local.get $4)
+ (i32.gt_u
+ (local.get $2)
+ (local.get $0)
+ )
+ )
+ (block
+ (if
+ (local.tee $3
+ (i32.load
+ (i32.const 616)
)
- (i32.gt_u
- (local.get $12)
- (local.get $2)
+ )
+ (br_if $label$break$L279
+ (i32.or
+ (i32.le_u
+ (local.get $10)
+ (local.get $4)
+ )
+ (i32.gt_u
+ (local.get $10)
+ (local.get $3)
+ )
)
)
)
- )
- (br_if $__rjti$13
- (i32.eq
- (local.get $1)
- (local.tee $2
- (call $_sbrk
- (local.get $3)
+ (br_if $__rjti$13
+ (i32.eq
+ (local.get $1)
+ (local.tee $3
+ (call $_sbrk
+ (local.get $2)
+ )
)
)
)
+ (br $__rjti$5)
)
- (br $__rjti$5)
)
)
)
+ (br $label$break$L279)
)
- (br $label$break$L279)
- )
- (local.set $1
- (local.get $3)
- )
- (local.set $4
- (i32.sub
- (i32.const 0)
- (local.get $1)
+ (local.set $1
+ (local.get $2)
)
- )
- (local.set $3
- (if (result i32)
- (i32.and
+ (local.set $4
+ (i32.sub
+ (i32.const 0)
+ (local.get $1)
+ )
+ )
+ (local.set $2
+ (if (result i32)
(i32.and
- (i32.ne
- (local.get $2)
- (i32.const -1)
+ (i32.and
+ (i32.ne
+ (local.get $3)
+ (i32.const -1)
+ )
+ (i32.lt_u
+ (local.get $1)
+ (i32.const 2147483647)
+ )
)
- (i32.lt_u
+ (i32.gt_u
+ (local.get $12)
(local.get $1)
- (i32.const 2147483647)
)
)
- (i32.gt_u
- (local.get $10)
- (local.get $1)
- )
- )
- (if (result i32)
- (i32.lt_u
- (local.tee $3
- (i32.and
- (i32.add
- (local.tee $3
- (i32.load
- (i32.const 656)
+ (if (result i32)
+ (i32.lt_u
+ (local.tee $2
+ (i32.and
+ (i32.add
+ (local.tee $2
+ (i32.load
+ (i32.const 656)
+ )
+ )
+ (i32.sub
+ (local.get $8)
+ (local.get $1)
)
)
(i32.sub
- (local.get $9)
- (local.get $1)
+ (i32.const 0)
+ (local.get $2)
)
)
- (i32.sub
- (i32.const 0)
- (local.get $3)
- )
)
+ (i32.const 2147483647)
)
- (i32.const 2147483647)
- )
- (if (result i32)
- (i32.eq
- (call $_sbrk
- (local.get $3)
- )
- (i32.const -1)
- )
- (block
- (drop
+ (if (result i32)
+ (i32.eq
(call $_sbrk
- (local.get $4)
+ (local.get $2)
)
+ (i32.const -1)
+ )
+ (block
+ (drop
+ (call $_sbrk
+ (local.get $4)
+ )
+ )
+ (br $label$break$L279)
+ )
+ (i32.add
+ (local.get $1)
+ (local.get $2)
)
- (br $label$break$L279)
- )
- (i32.add
- (local.get $1)
- (local.get $3)
)
+ (local.get $1)
)
(local.get $1)
)
- (local.get $1)
)
- )
- (if
- (i32.ne
- (local.get $2)
- (i32.const -1)
- )
- (block
- (local.set $1
- (local.get $2)
+ (if
+ (i32.ne
+ (local.get $3)
+ (i32.const -1)
+ )
+ (block
+ (local.set $1
+ (local.get $3)
+ )
+ (br $__rjti$13)
)
- (br $__rjti$13)
)
)
- )
- (i32.store
- (i32.const 620)
- (i32.or
- (i32.load
- (i32.const 620)
+ (i32.store
+ (i32.const 620)
+ (i32.or
+ (i32.load
+ (i32.const 620)
+ )
+ (i32.const 4)
)
- (i32.const 4)
)
)
)
- )
- (if
- (i32.lt_u
- (local.get $6)
- (i32.const 2147483647)
- )
(if
- (i32.and
- (i32.lt_u
- (local.tee $1
- (call $_sbrk
- (local.get $6)
+ (i32.lt_u
+ (local.get $6)
+ (i32.const 2147483647)
+ )
+ (if
+ (i32.and
+ (i32.lt_u
+ (local.tee $1
+ (call $_sbrk
+ (local.get $6)
+ )
+ )
+ (local.tee $2
+ (call $_sbrk
+ (i32.const 0)
+ )
)
)
- (local.tee $3
- (call $_sbrk
- (i32.const 0)
+ (i32.and
+ (i32.ne
+ (local.get $1)
+ (i32.const -1)
+ )
+ (i32.ne
+ (local.get $2)
+ (i32.const -1)
)
)
)
- (i32.and
- (i32.ne
- (local.get $1)
- (i32.const -1)
- )
- (i32.ne
- (local.get $3)
- (i32.const -1)
+ (br_if $__rjti$13
+ (i32.gt_u
+ (local.tee $2
+ (i32.sub
+ (local.get $2)
+ (local.get $1)
+ )
+ )
+ (i32.add
+ (local.get $0)
+ (i32.const 40)
+ )
)
)
)
- (br_if $__rjti$13
- (i32.gt_u
- (local.tee $3
- (i32.sub
- (local.get $3)
- (local.get $1)
- )
- )
- (i32.add
- (local.get $0)
- (i32.const 40)
- )
+ )
+ (br $__rjto$13)
+ )
+ (i32.store
+ (i32.const 608)
+ (local.tee $3
+ (i32.add
+ (i32.load
+ (i32.const 608)
)
+ (local.get $2)
)
)
)
- (br $__rjto$13)
- )
- (i32.store
- (i32.const 608)
- (local.tee $2
- (i32.add
+ (if
+ (i32.gt_u
+ (local.get $3)
(i32.load
- (i32.const 608)
+ (i32.const 612)
)
- (local.get $3)
)
- )
- )
- (if
- (i32.gt_u
- (local.get $2)
- (i32.load
+ (i32.store
(i32.const 612)
+ (local.get $3)
)
)
- (i32.store
- (i32.const 612)
- (local.get $2)
- )
- )
- (if
- (local.tee $5
- (i32.load
- (i32.const 200)
- )
- )
- (block $do-once40
- (local.set $2
- (i32.const 624)
+ (if
+ (local.tee $5
+ (i32.load
+ (i32.const 200)
+ )
)
- (block $__rjto$10
- (block $__rjti$10
- (loop $while-in45
- (br_if $__rjti$10
- (i32.eq
- (i32.add
- (local.tee $10
- (i32.load
- (local.get $2)
+ (block $do-once40
+ (local.set $3
+ (i32.const 624)
+ )
+ (block $__rjto$10
+ (block $__rjti$10
+ (loop $while-in45
+ (br_if $__rjti$10
+ (i32.eq
+ (i32.add
+ (local.tee $12
+ (i32.load
+ (local.get $3)
+ )
)
- )
- (local.tee $6
- (i32.load
- (local.tee $4
- (i32.add
- (local.get $2)
- (i32.const 4)
+ (local.tee $6
+ (i32.load
+ (local.tee $4
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
)
)
)
)
+ (local.get $1)
)
- (local.get $1)
)
- )
- (br_if $while-in45
- (local.tee $2
- (i32.load offset=8
- (local.get $2)
+ (br_if $while-in45
+ (local.tee $3
+ (i32.load
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ )
)
)
)
- )
- (br $__rjto$10)
- )
- (if
- (i32.eqz
- (i32.and
- (i32.load offset=12
- (local.get $2)
- )
- (i32.const 8)
- )
+ (br $__rjto$10)
)
(if
- (i32.and
- (i32.lt_u
- (local.get $5)
- (local.get $1)
- )
- (i32.ge_u
- (local.get $5)
- (local.get $10)
- )
- )
- (block
- (i32.store
- (local.get $4)
- (i32.add
+ (i32.eqz
+ (i32.and
+ (i32.load offset=12
(local.get $3)
- (local.get $6)
)
+ (i32.const 8)
)
- (local.set $2
- (i32.add
+ )
+ (if
+ (i32.and
+ (i32.lt_u
(local.get $5)
- (local.tee $1
- (select
- (i32.and
- (i32.sub
- (i32.const 0)
- (local.tee $1
- (i32.add
- (local.get $5)
- (i32.const 8)
+ (local.get $1)
+ )
+ (i32.ge_u
+ (local.get $5)
+ (local.get $12)
+ )
+ )
+ (block
+ (i32.store
+ (local.get $4)
+ (i32.add
+ (local.get $2)
+ (local.get $6)
+ )
+ )
+ (local.set $3
+ (i32.add
+ (local.get $5)
+ (local.tee $1
+ (select
+ (i32.and
+ (i32.sub
+ (i32.const 0)
+ (local.tee $1
+ (i32.add
+ (local.get $5)
+ (i32.const 8)
+ )
)
)
+ (i32.const 7)
+ )
+ (i32.const 0)
+ (i32.and
+ (local.get $1)
+ (i32.const 7)
)
- (i32.const 7)
- )
- (i32.const 0)
- (i32.and
- (local.get $1)
- (i32.const 7)
)
)
)
)
- )
- (local.set $1
- (i32.add
- (i32.load
- (i32.const 188)
- )
- (i32.sub
- (local.get $3)
- (local.get $1)
+ (local.set $1
+ (i32.add
+ (i32.load
+ (i32.const 188)
+ )
+ (i32.sub
+ (local.get $2)
+ (local.get $1)
+ )
)
)
- )
- (i32.store
- (i32.const 200)
- (local.get $2)
- )
- (i32.store
- (i32.const 188)
- (local.get $1)
- )
- (i32.store offset=4
- (local.get $2)
- (i32.or
- (local.get $1)
- (i32.const 1)
+ (i32.store
+ (i32.const 200)
+ (local.get $3)
)
- )
- (i32.store offset=4
- (i32.add
+ (i32.store
+ (i32.const 188)
(local.get $1)
- (local.get $2)
)
- (i32.const 40)
- )
- (i32.store
- (i32.const 204)
- (i32.load
- (i32.const 664)
+ (i32.store offset=4
+ (local.get $3)
+ (i32.or
+ (local.get $1)
+ (i32.const 1)
+ )
+ )
+ (i32.store offset=4
+ (i32.add
+ (local.get $1)
+ (local.get $3)
+ )
+ (i32.const 40)
)
+ (i32.store
+ (i32.const 204)
+ (i32.load
+ (i32.const 664)
+ )
+ )
+ (br $do-once40)
)
- (br $do-once40)
)
)
)
- )
- (if
- (i32.lt_u
- (local.get $1)
- (local.tee $4
- (i32.load
+ (if
+ (i32.lt_u
+ (local.get $1)
+ (local.tee $4
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ )
+ (block
+ (i32.store
(i32.const 192)
+ (local.get $1)
+ )
+ (local.set $4
+ (local.get $1)
)
)
)
- (block
- (i32.store
- (i32.const 192)
- (local.get $1)
- )
- (local.set $4
+ (local.set $12
+ (i32.add
(local.get $1)
+ (local.get $2)
)
)
- )
- (local.set $10
- (i32.add
- (local.get $1)
- (local.get $3)
+ (local.set $3
+ (i32.const 624)
)
- )
- (local.set $2
- (i32.const 624)
- )
- (local.set $4
- (block $__rjto$11 (result i32)
- (block $__rjti$11
- (br $__rjto$11
- (loop $while-in47 (result i32)
- (if
- (i32.eq
- (i32.load
- (local.get $2)
+ (local.set $4
+ (block $__rjto$11 (result i32)
+ (block $__rjti$11
+ (br $__rjto$11
+ (loop $while-in47 (result i32)
+ (if
+ (i32.eq
+ (i32.load
+ (local.get $3)
+ )
+ (local.get $12)
)
- (local.get $10)
- )
- (block
- (local.set $6
- (local.get $2)
+ (block
+ (local.set $6
+ (local.get $3)
+ )
+ (br $__rjti$11)
)
- (br $__rjti$11)
)
- )
- (br_if $while-in47
- (local.tee $2
- (i32.load offset=8
- (local.get $2)
+ (br_if $while-in47
+ (local.tee $3
+ (i32.load
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ )
)
)
+ (i32.const 624)
)
- (i32.const 624)
- )
- )
- )
- (if (result i32)
- (i32.and
- (i32.load offset=12
- (local.get $2)
)
- (i32.const 8)
)
- (i32.const 624)
- (block
- (i32.store
- (local.get $6)
- (local.get $1)
- )
- (i32.store
- (local.tee $2
- (i32.add
- (local.get $2)
- (i32.const 4)
- )
- )
- (i32.add
- (i32.load
- (local.get $2)
- )
+ (if (result i32)
+ (i32.and
+ (i32.load offset=12
(local.get $3)
)
+ (i32.const 8)
)
- (local.set $9
- (i32.add
- (local.tee $12
- (i32.add
- (select
- (i32.and
- (i32.sub
- (i32.const 0)
- (local.tee $3
- (i32.add
- (local.get $1)
- (i32.const 8)
- )
- )
- )
- (i32.const 7)
- )
- (i32.const 0)
- (i32.and
- (local.get $3)
- (i32.const 7)
- )
- )
- (local.get $1)
+ (i32.const 624)
+ (block
+ (i32.store
+ (local.get $6)
+ (local.get $1)
+ )
+ (i32.store offset=4
+ (local.get $3)
+ (i32.add
+ (i32.load offset=4
+ (local.get $3)
)
+ (local.get $2)
)
- (local.get $0)
)
- )
- (local.set $7
- (i32.sub
- (i32.sub
- (local.tee $6
+ (local.set $8
+ (i32.add
+ (local.tee $10
(i32.add
- (local.get $10)
(select
(i32.and
(i32.sub
(i32.const 0)
- (local.tee $1
+ (local.tee $2
(i32.add
- (local.get $10)
+ (local.get $1)
(i32.const 8)
)
)
@@ -10987,1116 +10913,1146 @@
)
(i32.const 0)
(i32.and
- (local.get $1)
+ (local.get $2)
(i32.const 7)
)
)
+ (local.get $1)
)
)
- (local.get $12)
+ (local.get $0)
)
- (local.get $0)
- )
- )
- (i32.store offset=4
- (local.get $12)
- (i32.or
- (local.get $0)
- (i32.const 3)
- )
- )
- (if
- (i32.eq
- (local.get $5)
- (local.get $6)
)
- (block
- (i32.store
- (i32.const 188)
- (local.tee $0
- (i32.add
- (i32.load
- (i32.const 188)
+ (local.set $7
+ (i32.sub
+ (i32.sub
+ (local.tee $6
+ (i32.add
+ (local.get $12)
+ (select
+ (i32.and
+ (i32.sub
+ (i32.const 0)
+ (local.tee $1
+ (i32.add
+ (local.get $12)
+ (i32.const 8)
+ )
+ )
+ )
+ (i32.const 7)
+ )
+ (i32.const 0)
+ (i32.and
+ (local.get $1)
+ (i32.const 7)
+ )
+ )
)
- (local.get $7)
)
+ (local.get $10)
)
+ (local.get $0)
)
- (i32.store
- (i32.const 200)
- (local.get $9)
- )
- (i32.store offset=4
- (local.get $9)
- (i32.or
- (local.get $0)
- (i32.const 1)
- )
+ )
+ (i32.store offset=4
+ (local.get $10)
+ (i32.or
+ (local.get $0)
+ (i32.const 3)
)
)
- (block $do-once48
- (if
- (i32.eq
- (i32.load
- (i32.const 196)
- )
- (local.get $6)
- )
- (block
- (i32.store
- (i32.const 184)
- (local.tee $0
- (i32.add
- (i32.load
- (i32.const 184)
- )
- (local.get $7)
+ (if
+ (i32.eq
+ (local.get $5)
+ (local.get $6)
+ )
+ (block
+ (i32.store
+ (i32.const 188)
+ (local.tee $0
+ (i32.add
+ (i32.load
+ (i32.const 188)
)
+ (local.get $7)
)
)
- (i32.store
- (i32.const 196)
- (local.get $9)
- )
- (i32.store offset=4
- (local.get $9)
- (i32.or
- (local.get $0)
- (i32.const 1)
- )
- )
- (i32.store
- (i32.add
- (local.get $0)
- (local.get $9)
- )
+ )
+ (i32.store
+ (i32.const 200)
+ (local.get $8)
+ )
+ (i32.store offset=4
+ (local.get $8)
+ (i32.or
(local.get $0)
+ (i32.const 1)
)
- (br $do-once48)
)
)
- (i32.store
- (local.tee $0
- (i32.add
- (if (result i32)
- (i32.eq
- (i32.and
- (local.tee $0
- (i32.load offset=4
- (local.get $6)
- )
+ (block $do-once48
+ (if
+ (i32.eq
+ (i32.load
+ (i32.const 196)
+ )
+ (local.get $6)
+ )
+ (block
+ (i32.store
+ (i32.const 184)
+ (local.tee $0
+ (i32.add
+ (i32.load
+ (i32.const 184)
)
- (i32.const 3)
+ (local.get $7)
)
+ )
+ )
+ (i32.store
+ (i32.const 196)
+ (local.get $8)
+ )
+ (i32.store offset=4
+ (local.get $8)
+ (i32.or
+ (local.get $0)
(i32.const 1)
)
- (block (result i32)
- (local.set $10
+ )
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (local.get $8)
+ )
+ (local.get $0)
+ )
+ (br $do-once48)
+ )
+ )
+ (i32.store
+ (local.tee $0
+ (i32.add
+ (if (result i32)
+ (i32.eq
(i32.and
- (local.get $0)
- (i32.const -8)
- )
- )
- (local.set $1
- (i32.shr_u
- (local.get $0)
+ (local.tee $0
+ (i32.load offset=4
+ (local.get $6)
+ )
+ )
(i32.const 3)
)
+ (i32.const 1)
)
- (block $label$break$L331
- (if
- (i32.lt_u
+ (block (result i32)
+ (local.set $12
+ (i32.and
(local.get $0)
- (i32.const 256)
+ (i32.const -8)
)
- (block
- (local.set $2
- (i32.load offset=12
- (local.get $6)
- )
+ )
+ (local.set $1
+ (i32.shr_u
+ (local.get $0)
+ (i32.const 3)
+ )
+ )
+ (block $label$break$L331
+ (if
+ (i32.lt_u
+ (local.get $0)
+ (i32.const 256)
)
- (if
- (i32.ne
- (local.tee $3
- (i32.load offset=8
- (local.get $6)
- )
- )
- (local.tee $0
- (i32.add
- (i32.shl
- (local.get $1)
- (i32.const 3)
- )
- (i32.const 216)
- )
+ (block
+ (local.set $3
+ (i32.load offset=12
+ (local.get $6)
)
)
- (block $do-once51
- (if
- (i32.lt_u
- (local.get $3)
- (local.get $4)
+ (if
+ (i32.ne
+ (local.tee $2
+ (i32.load offset=8
+ (local.get $6)
+ )
)
- (call $_abort)
- )
- (br_if $do-once51
- (i32.eq
- (i32.load offset=12
- (local.get $3)
+ (local.tee $0
+ (i32.add
+ (i32.shl
+ (local.get $1)
+ (i32.const 3)
+ )
+ (i32.const 216)
)
- (local.get $6)
)
)
- (call $_abort)
- )
- )
- (if
- (i32.eq
- (local.get $2)
- (local.get $3)
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.and
- (i32.load
- (i32.const 176)
+ (block $do-once51
+ (if
+ (i32.lt_u
+ (local.get $2)
+ (local.get $4)
)
- (i32.xor
- (i32.shl
- (i32.const 1)
- (local.get $1)
+ (call $_abort)
+ )
+ (br_if $do-once51
+ (i32.eq
+ (i32.load offset=12
+ (local.get $2)
)
- (i32.const -1)
+ (local.get $6)
)
)
+ (call $_abort)
)
- (br $label$break$L331)
)
- )
- (if
- (i32.eq
- (local.get $0)
- (local.get $2)
- )
- (local.set $15
- (i32.add
+ (if
+ (i32.eq
(local.get $2)
- (i32.const 8)
+ (local.get $3)
+ )
+ (block
+ (i32.store
+ (i32.const 176)
+ (i32.and
+ (i32.load
+ (i32.const 176)
+ )
+ (i32.xor
+ (i32.shl
+ (i32.const 1)
+ (local.get $1)
+ )
+ (i32.const -1)
+ )
+ )
+ )
+ (br $label$break$L331)
)
)
- (block $do-once53
- (if
- (i32.lt_u
- (local.get $2)
- (local.get $4)
+ (if
+ (i32.eq
+ (local.get $0)
+ (local.get $3)
+ )
+ (local.set $15
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
)
- (call $_abort)
)
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $2)
- (i32.const 8)
- )
- )
+ (block $do-once53
+ (if
+ (i32.lt_u
+ (local.get $3)
+ (local.get $4)
)
- (local.get $6)
+ (call $_abort)
)
- (block
- (local.set $15
- (local.get $0)
+ (local.set $0
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
)
- (br $do-once53)
)
+ (if
+ (i32.eq
+ (i32.load offset=8
+ (local.get $3)
+ )
+ (local.get $6)
+ )
+ (block
+ (local.set $15
+ (local.get $0)
+ )
+ (br $do-once53)
+ )
+ )
+ (call $_abort)
)
- (call $_abort)
)
- )
- (i32.store offset=12
- (local.get $3)
- (local.get $2)
- )
- (i32.store
- (local.get $15)
- (local.get $3)
- )
- )
- (block
- (local.set $5
- (i32.load offset=24
- (local.get $6)
+ (i32.store offset=12
+ (local.get $2)
+ (local.get $3)
+ )
+ (i32.store
+ (local.get $15)
+ (local.get $2)
)
)
- (if
- (i32.eq
- (local.tee $0
- (i32.load offset=12
- (local.get $6)
- )
+ (block
+ (local.set $5
+ (i32.load offset=24
+ (local.get $6)
)
- (local.get $6)
)
- (block $do-once55
- (if
- (i32.eqz
- (local.tee $1
- (i32.load
- (local.tee $0
- (i32.add
- (local.tee $3
- (i32.add
- (local.get $6)
- (i32.const 16)
- )
- )
- (i32.const 4)
- )
- )
- )
+ (if
+ (i32.eq
+ (local.tee $0
+ (i32.load offset=12
+ (local.get $6)
)
)
- (block
- (br_if $do-once55
- (i32.eqz
- (local.tee $1
- (i32.load
- (local.get $3)
- )
+ (local.get $6)
+ )
+ (block $do-once55
+ (local.set $0
+ (i32.add
+ (local.tee $2
+ (i32.add
+ (local.get $6)
+ (i32.const 16)
)
)
- )
- (local.set $0
- (local.get $3)
+ (i32.const 4)
)
)
- )
- (loop $while-in58
(if
- (local.tee $3
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $1)
- (i32.const 20)
- )
+ (i32.eqz
+ (local.tee $1
+ (i32.load offset=4
+ (local.get $2)
)
)
)
(block
- (local.set $1
- (local.get $3)
+ (br_if $do-once55
+ (i32.eqz
+ (local.tee $1
+ (i32.load offset=16
+ (local.get $6)
+ )
+ )
+ )
)
(local.set $0
(local.get $2)
)
- (br $while-in58)
)
)
- (if
- (local.tee $3
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $1)
- (i32.const 16)
+ (loop $while-in58
+ (if
+ (local.tee $2
+ (i32.load
+ (local.tee $3
+ (i32.add
+ (local.get $1)
+ (i32.const 20)
+ )
)
)
)
+ (block
+ (local.set $1
+ (local.get $2)
+ )
+ (local.set $0
+ (local.get $3)
+ )
+ (br $while-in58)
+ )
)
- (block
- (local.set $1
- (local.get $3)
+ (if
+ (local.tee $2
+ (i32.load
+ (local.tee $3
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
+ )
+ )
)
- (local.set $0
- (local.get $2)
+ (block
+ (local.set $1
+ (local.get $2)
+ )
+ (local.set $0
+ (local.get $3)
+ )
+ (br $while-in58)
)
- (br $while-in58)
)
)
- )
- (if
- (i32.lt_u
- (local.get $0)
- (local.get $4)
- )
- (call $_abort)
- (block
- (i32.store
+ (if
+ (i32.lt_u
(local.get $0)
- (i32.const 0)
- )
- (local.set $8
- (local.get $1)
+ (local.get $4)
)
- )
- )
- )
- (block
- (if
- (i32.lt_u
- (local.tee $2
- (i32.load offset=8
- (local.get $6)
+ (call $_abort)
+ (block
+ (i32.store
+ (local.get $0)
+ (i32.const 0)
)
- )
- (local.get $4)
- )
- (call $_abort)
- )
- (if
- (i32.ne
- (local.get $6)
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $2)
- (i32.const 12)
- )
+ (local.set $11
+ (local.get $1)
)
)
)
- (call $_abort)
)
- (if
- (i32.eq
- (i32.load
+ (block
+ (if
+ (i32.lt_u
(local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 8)
+ (i32.load offset=8
+ (local.get $6)
)
)
+ (local.get $4)
)
- (local.get $6)
+ (call $_abort)
)
- (block
- (i32.store
- (local.get $3)
- (local.get $0)
+ (if
+ (i32.ne
+ (local.get $6)
+ (i32.load offset=12
+ (local.get $1)
+ )
)
- (i32.store
- (local.get $1)
- (local.get $2)
+ (call $_abort)
+ )
+ (if
+ (i32.eq
+ (i32.load offset=8
+ (local.get $0)
+ )
+ (local.get $6)
)
- (local.set $8
- (local.get $0)
+ (block
+ (i32.store offset=12
+ (local.get $1)
+ (local.get $0)
+ )
+ (i32.store offset=8
+ (local.get $0)
+ (local.get $1)
+ )
+ (local.set $11
+ (local.get $0)
+ )
)
+ (call $_abort)
)
- (call $_abort)
)
)
- )
- (br_if $label$break$L331
- (i32.eqz
- (local.get $5)
+ (br_if $label$break$L331
+ (i32.eqz
+ (local.get $5)
+ )
)
- )
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (i32.shl
- (local.tee $1
- (i32.load offset=28
- (local.get $6)
+ (if
+ (i32.eq
+ (i32.load
+ (local.tee $0
+ (i32.add
+ (i32.shl
+ (local.tee $1
+ (i32.load offset=28
+ (local.get $6)
+ )
)
+ (i32.const 2)
)
- (i32.const 2)
+ (i32.const 480)
)
- (i32.const 480)
)
)
+ (local.get $6)
)
- (local.get $6)
- )
- (block $do-once59
- (i32.store
- (local.get $0)
- (local.get $8)
- )
- (br_if $do-once59
- (local.get $8)
+ (block $do-once59
+ (i32.store
+ (local.get $0)
+ (local.get $11)
+ )
+ (br_if $do-once59
+ (local.get $11)
+ )
+ (i32.store
+ (i32.const 180)
+ (i32.and
+ (i32.load
+ (i32.const 180)
+ )
+ (i32.xor
+ (i32.shl
+ (i32.const 1)
+ (local.get $1)
+ )
+ (i32.const -1)
+ )
+ )
+ )
+ (br $label$break$L331)
)
- (i32.store
- (i32.const 180)
- (i32.and
- (i32.load
- (i32.const 180)
+ (block
+ (if
+ (i32.lt_u
+ (local.get $5)
+ (i32.load
+ (i32.const 192)
+ )
)
- (i32.xor
- (i32.shl
- (i32.const 1)
- (local.get $1)
+ (call $_abort)
+ )
+ (if
+ (i32.eq
+ (i32.load offset=16
+ (local.get $5)
)
- (i32.const -1)
+ (local.get $6)
+ )
+ (i32.store offset=16
+ (local.get $5)
+ (local.get $11)
+ )
+ (i32.store offset=20
+ (local.get $5)
+ (local.get $11)
+ )
+ )
+ (br_if $label$break$L331
+ (i32.eqz
+ (local.get $11)
)
)
)
- (br $label$break$L331)
)
- (block
- (if
- (i32.lt_u
- (local.get $5)
+ (if
+ (i32.lt_u
+ (local.get $11)
+ (local.tee $0
(i32.load
(i32.const 192)
)
)
- (call $_abort)
)
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $5)
- (i32.const 16)
- )
- )
- )
+ (call $_abort)
+ )
+ (i32.store
+ (i32.add
+ (local.get $11)
+ (i32.const 24)
+ )
+ (local.get $5)
+ )
+ (if
+ (local.tee $1
+ (i32.load offset=16
(local.get $6)
)
- (i32.store
- (local.get $0)
- (local.get $8)
- )
- (i32.store offset=20
- (local.get $5)
- (local.get $8)
- )
)
- (br_if $label$break$L331
- (i32.eqz
- (local.get $8)
+ (if
+ (i32.lt_u
+ (local.get $1)
+ (local.get $0)
)
- )
- )
- )
- (if
- (i32.lt_u
- (local.get $8)
- (local.tee $1
- (i32.load
- (i32.const 192)
+ (call $_abort)
+ (block
+ (i32.store
+ (i32.add
+ (local.get $11)
+ (i32.const 16)
+ )
+ (local.get $1)
+ )
+ (i32.store offset=24
+ (local.get $1)
+ (local.get $11)
+ )
)
)
)
- (call $_abort)
- )
- (i32.store offset=24
- (local.get $8)
- (local.get $5)
- )
- (if
- (local.tee $3
- (i32.load
+ (br_if $label$break$L331
+ (i32.eqz
(local.tee $0
- (i32.add
- (local.get $6)
- (i32.const 16)
+ (i32.load offset=4
+ (i32.add
+ (local.get $6)
+ (i32.const 16)
+ )
)
)
)
)
(if
(i32.lt_u
- (local.get $3)
- (local.get $1)
+ (local.get $0)
+ (i32.load
+ (i32.const 192)
+ )
)
(call $_abort)
(block
- (i32.store offset=16
- (local.get $8)
- (local.get $3)
+ (i32.store
+ (i32.add
+ (local.get $11)
+ (i32.const 20)
+ )
+ (local.get $0)
)
(i32.store offset=24
- (local.get $3)
- (local.get $8)
- )
- )
- )
- )
- (br_if $label$break$L331
- (i32.eqz
- (local.tee $0
- (i32.load offset=4
(local.get $0)
+ (local.get $11)
)
)
)
)
- (if
- (i32.lt_u
- (local.get $0)
- (i32.load
- (i32.const 192)
- )
- )
- (call $_abort)
- (block
- (i32.store offset=20
- (local.get $8)
- (local.get $0)
- )
- (i32.store offset=24
- (local.get $0)
- (local.get $8)
- )
- )
- )
)
)
- )
- (local.set $7
+ (local.set $7
+ (i32.add
+ (local.get $7)
+ (local.get $12)
+ )
+ )
(i32.add
- (local.get $7)
- (local.get $10)
+ (local.get $6)
+ (local.get $12)
)
)
- (i32.add
- (local.get $6)
- (local.get $10)
- )
+ (local.get $6)
)
- (local.get $6)
+ (i32.const 4)
)
- (i32.const 4)
)
- )
- (i32.and
- (i32.load
- (local.get $0)
+ (i32.and
+ (i32.load
+ (local.get $0)
+ )
+ (i32.const -2)
)
- (i32.const -2)
- )
- )
- (i32.store offset=4
- (local.get $9)
- (i32.or
- (local.get $7)
- (i32.const 1)
)
- )
- (i32.store
- (i32.add
- (local.get $7)
- (local.get $9)
+ (i32.store offset=4
+ (local.get $8)
+ (i32.or
+ (local.get $7)
+ (i32.const 1)
+ )
)
- (local.get $7)
- )
- (local.set $0
- (i32.shr_u
+ (i32.store
+ (i32.add
+ (local.get $7)
+ (local.get $8)
+ )
(local.get $7)
- (i32.const 3)
)
- )
- (if
- (i32.lt_u
- (local.get $7)
- (i32.const 256)
+ (local.set $0
+ (i32.shr_u
+ (local.get $7)
+ (i32.const 3)
+ )
)
- (block
- (local.set $3
- (i32.add
- (i32.shl
- (local.get $0)
- (i32.const 3)
- )
- (i32.const 216)
- )
+ (if
+ (i32.lt_u
+ (local.get $7)
+ (i32.const 256)
)
- (if
- (i32.and
- (local.tee $1
- (i32.load
- (i32.const 176)
- )
- )
- (local.tee $0
+ (block
+ (local.set $2
+ (i32.add
(i32.shl
- (i32.const 1)
(local.get $0)
+ (i32.const 3)
)
+ (i32.const 216)
)
)
- (block $do-once63
- (if
- (i32.ge_u
- (local.tee $0
- (i32.load
- (local.tee $1
- (i32.add
- (local.get $3)
- (i32.const 8)
- )
- )
- )
- )
+ (if
+ (i32.and
+ (local.tee $1
(i32.load
- (i32.const 192)
+ (i32.const 176)
)
)
- (block
- (local.set $16
- (local.get $1)
- )
- (local.set $11
+ (local.tee $0
+ (i32.shl
+ (i32.const 1)
(local.get $0)
)
- (br $do-once63)
)
)
- (call $_abort)
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.or
- (local.get $0)
- (local.get $1)
+ (block $do-once63
+ (local.set $1
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ )
+ (if
+ (i32.ge_u
+ (local.tee $0
+ (i32.load offset=8
+ (local.get $2)
+ )
+ )
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ (block
+ (local.set $16
+ (local.get $1)
+ )
+ (local.set $9
+ (local.get $0)
+ )
+ (br $do-once63)
+ )
)
+ (call $_abort)
)
- (local.set $16
- (i32.add
- (local.get $3)
- (i32.const 8)
+ (block
+ (i32.store
+ (i32.const 176)
+ (i32.or
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (local.set $16
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ )
+ (local.set $9
+ (local.get $2)
)
)
- (local.set $11
- (local.get $3)
+ )
+ (i32.store
+ (local.get $16)
+ (local.get $8)
+ )
+ (i32.store
+ (i32.add
+ (local.get $9)
+ (i32.const 12)
)
+ (local.get $8)
)
+ (i32.store offset=8
+ (local.get $8)
+ (local.get $9)
+ )
+ (i32.store offset=12
+ (local.get $8)
+ (local.get $2)
+ )
+ (br $do-once48)
)
- (i32.store
- (local.get $16)
- (local.get $9)
- )
- (i32.store offset=12
- (local.get $11)
- (local.get $9)
- )
- (i32.store offset=8
- (local.get $9)
- (local.get $11)
- )
- (i32.store offset=12
- (local.get $9)
- (local.get $3)
- )
- (br $do-once48)
)
- )
- (local.set $3
- (i32.add
- (i32.shl
- (local.tee $2
- (if (result i32)
- (local.tee $0
- (i32.shr_u
- (local.get $7)
- (i32.const 8)
- )
- )
+ (local.set $2
+ (i32.add
+ (i32.shl
+ (local.tee $3
(if (result i32)
- (i32.gt_u
- (local.get $7)
- (i32.const 16777215)
+ (local.tee $0
+ (i32.shr_u
+ (local.get $7)
+ (i32.const 8)
+ )
)
- (i32.const 31)
- (block (result i32)
- (local.set $2
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $0
- (i32.shl
- (local.get $0)
- (local.tee $1
- (i32.and
- (i32.shr_u
- (i32.add
- (local.get $0)
- (i32.const 1048320)
+ (if (result i32)
+ (i32.gt_u
+ (local.get $7)
+ (i32.const 16777215)
+ )
+ (i32.const 31)
+ (block (result i32)
+ (local.set $3
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (local.tee $1
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.get $0)
+ (i32.const 1048320)
+ )
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 8)
)
- (i32.const 8)
)
)
)
+ (i32.const 520192)
)
- (i32.const 520192)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 4)
)
- (i32.const 4)
)
- )
- (local.set $3
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $0
- (i32.shl
- (local.get $0)
- (local.get $2)
+ (local.set $2
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (local.get $3)
+ )
)
+ (i32.const 245760)
)
- (i32.const 245760)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 2)
)
- (i32.const 2)
)
- )
- (i32.or
- (i32.and
- (i32.shr_u
- (local.get $7)
- (i32.add
- (local.tee $0
- (i32.add
- (i32.sub
- (i32.const 14)
- (i32.or
+ (i32.or
+ (i32.and
+ (i32.shr_u
+ (local.get $7)
+ (i32.add
+ (local.tee $0
+ (i32.add
+ (i32.sub
+ (i32.const 14)
(i32.or
- (local.get $1)
+ (i32.or
+ (local.get $1)
+ (local.get $3)
+ )
(local.get $2)
)
- (local.get $3)
)
- )
- (i32.shr_u
- (i32.shl
- (local.get $0)
- (local.get $3)
+ (i32.shr_u
+ (i32.shl
+ (local.get $0)
+ (local.get $2)
+ )
+ (i32.const 15)
)
- (i32.const 15)
)
)
+ (i32.const 7)
)
- (i32.const 7)
)
+ (i32.const 1)
+ )
+ (i32.shl
+ (local.get $0)
+ (i32.const 1)
)
- (i32.const 1)
- )
- (i32.shl
- (local.get $0)
- (i32.const 1)
)
)
)
+ (i32.const 0)
)
- (i32.const 0)
)
+ (i32.const 2)
)
- (i32.const 2)
+ (i32.const 480)
)
- (i32.const 480)
)
- )
- (i32.store offset=28
- (local.get $9)
- (local.get $2)
- )
- (i32.store offset=4
- (local.tee $0
+ (i32.store offset=28
+ (local.get $8)
+ (local.get $3)
+ )
+ (i32.store offset=4
(i32.add
- (local.get $9)
+ (local.get $8)
(i32.const 16)
)
+ (i32.const 0)
)
- (i32.const 0)
- )
- (i32.store
- (local.get $0)
- (i32.const 0)
- )
- (if
- (i32.eqz
- (i32.and
- (local.tee $1
- (i32.load
- (i32.const 180)
+ (i32.store offset=16
+ (local.get $8)
+ (i32.const 0)
+ )
+ (if
+ (i32.eqz
+ (i32.and
+ (local.tee $1
+ (i32.load
+ (i32.const 180)
+ )
)
- )
- (local.tee $0
- (i32.shl
- (i32.const 1)
- (local.get $2)
+ (local.tee $0
+ (i32.shl
+ (i32.const 1)
+ (local.get $3)
+ )
)
)
)
- )
- (block
- (i32.store
- (i32.const 180)
- (i32.or
- (local.get $0)
- (local.get $1)
- )
- )
- (i32.store
- (local.get $3)
- (local.get $9)
- )
- (i32.store offset=24
- (local.get $9)
- (local.get $3)
- )
- (i32.store offset=12
- (local.get $9)
- (local.get $9)
- )
- (i32.store offset=8
- (local.get $9)
- (local.get $9)
- )
- (br $do-once48)
- )
- )
- (local.set $2
- (i32.shl
- (local.get $7)
- (select
- (i32.const 0)
- (i32.sub
- (i32.const 25)
- (i32.shr_u
- (local.get $2)
- (i32.const 1)
+ (block
+ (i32.store
+ (i32.const 180)
+ (i32.or
+ (local.get $0)
+ (local.get $1)
)
)
- (i32.eq
+ (i32.store
+ (local.get $2)
+ (local.get $8)
+ )
+ (i32.store offset=24
+ (local.get $8)
(local.get $2)
- (i32.const 31)
)
+ (i32.store offset=12
+ (local.get $8)
+ (local.get $8)
+ )
+ (i32.store offset=8
+ (local.get $8)
+ (local.get $8)
+ )
+ (br $do-once48)
)
)
- )
- (local.set $0
- (i32.load
- (local.get $3)
- )
- )
- (block $__rjto$7
- (block $__rjti$7
- (loop $while-in68
- (br_if $__rjti$7
- (i32.eq
- (i32.and
- (i32.load offset=4
- (local.get $0)
- )
- (i32.const -8)
+ (local.set $3
+ (i32.shl
+ (local.get $7)
+ (select
+ (i32.const 0)
+ (i32.sub
+ (i32.const 25)
+ (i32.shr_u
+ (local.get $3)
+ (i32.const 1)
)
- (local.get $7)
)
- )
- (local.set $3
- (i32.shl
- (local.get $2)
- (i32.const 1)
+ (i32.eq
+ (local.get $3)
+ (i32.const 31)
)
)
- (if
- (local.tee $1
- (i32.load
- (local.tee $2
- (i32.add
+ )
+ )
+ (local.set $0
+ (i32.load
+ (local.get $2)
+ )
+ )
+ (block $__rjto$7
+ (block $__rjti$7
+ (loop $while-in68
+ (br_if $__rjti$7
+ (i32.eq
+ (i32.and
+ (i32.load
(i32.add
(local.get $0)
- (i32.const 16)
+ (i32.const 4)
)
- (i32.shl
- (i32.shr_u
- (local.get $2)
- (i32.const 31)
+ )
+ (i32.const -8)
+ )
+ (local.get $7)
+ )
+ )
+ (local.set $2
+ (i32.shl
+ (local.get $3)
+ (i32.const 1)
+ )
+ )
+ (if
+ (local.tee $1
+ (i32.load
+ (local.tee $3
+ (i32.add
+ (i32.add
+ (local.get $0)
+ (i32.const 16)
+ )
+ (i32.shl
+ (i32.shr_u
+ (local.get $3)
+ (i32.const 31)
+ )
+ (i32.const 2)
)
- (i32.const 2)
)
)
)
)
+ (block
+ (local.set $3
+ (local.get $2)
+ )
+ (local.set $0
+ (local.get $1)
+ )
+ (br $while-in68)
+ )
+ )
+ )
+ (if
+ (i32.lt_u
+ (local.get $3)
+ (i32.load
+ (i32.const 192)
+ )
)
+ (call $_abort)
(block
- (local.set $2
+ (i32.store
(local.get $3)
+ (local.get $8)
)
- (local.set $0
- (local.get $1)
+ (i32.store offset=24
+ (local.get $8)
+ (local.get $0)
)
- (br $while-in68)
+ (i32.store offset=12
+ (local.get $8)
+ (local.get $8)
+ )
+ (i32.store offset=8
+ (local.get $8)
+ (local.get $8)
+ )
+ (br $do-once48)
)
)
+ (br $__rjto$7)
)
(if
- (i32.lt_u
- (local.get $2)
- (i32.load
- (i32.const 192)
+ (i32.and
+ (i32.ge_u
+ (local.tee $2
+ (i32.load offset=8
+ (local.get $0)
+ )
+ )
+ (local.tee $1
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ )
+ (i32.ge_u
+ (local.get $0)
+ (local.get $1)
)
)
- (call $_abort)
(block
- (i32.store
+ (i32.store offset=12
(local.get $2)
- (local.get $9)
+ (local.get $8)
)
- (i32.store offset=24
- (local.get $9)
+ (i32.store offset=8
(local.get $0)
- )
- (i32.store offset=12
- (local.get $9)
- (local.get $9)
+ (local.get $8)
)
(i32.store offset=8
- (local.get $9)
- (local.get $9)
+ (local.get $8)
+ (local.get $2)
)
- (br $do-once48)
- )
- )
- (br $__rjto$7)
- )
- (if
- (i32.and
- (i32.ge_u
- (local.tee $2
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
- )
+ (i32.store offset=12
+ (local.get $8)
+ (local.get $0)
)
- (local.tee $1
- (i32.load
- (i32.const 192)
- )
+ (i32.store offset=24
+ (local.get $8)
+ (i32.const 0)
)
)
- (i32.ge_u
- (local.get $0)
- (local.get $1)
- )
- )
- (block
- (i32.store offset=12
- (local.get $2)
- (local.get $9)
- )
- (i32.store
- (local.get $3)
- (local.get $9)
- )
- (i32.store offset=8
- (local.get $9)
- (local.get $2)
- )
- (i32.store offset=12
- (local.get $9)
- (local.get $0)
- )
- (i32.store offset=24
- (local.get $9)
- (i32.const 0)
- )
+ (call $_abort)
)
- (call $_abort)
)
)
)
- )
- (return
- (i32.add
- (local.get $12)
- (i32.const 8)
+ (return
+ (i32.add
+ (local.get $10)
+ (i32.const 8)
+ )
)
)
)
)
)
- )
- (loop $while-in70
- (block $while-out69
- (if
- (i32.le_u
- (local.tee $2
- (i32.load
- (local.get $4)
+ (loop $while-in70
+ (block $while-out69
+ (if
+ (i32.le_u
+ (local.tee $3
+ (i32.load
+ (local.get $4)
+ )
)
+ (local.get $5)
)
- (local.get $5)
- )
- (br_if $while-out69
- (i32.gt_u
- (local.tee $2
- (i32.add
- (local.get $2)
- (i32.load offset=4
- (local.get $4)
+ (br_if $while-out69
+ (i32.gt_u
+ (local.tee $3
+ (i32.add
+ (local.get $3)
+ (i32.load
+ (i32.add
+ (local.get $4)
+ (i32.const 4)
+ )
+ )
)
)
+ (local.get $5)
)
- (local.get $5)
)
)
- )
- (local.set $4
- (i32.load offset=8
- (local.get $4)
+ (local.set $4
+ (i32.load
+ (i32.add
+ (local.get $4)
+ (i32.const 8)
+ )
+ )
)
+ (br $while-in70)
)
- (br $while-in70)
)
- )
- (local.set $11
- (i32.add
- (local.tee $4
- (i32.add
- (local.get $2)
- (i32.const -47)
+ (local.set $9
+ (i32.add
+ (local.tee $4
+ (i32.add
+ (local.get $3)
+ (i32.const -47)
+ )
)
+ (i32.const 8)
)
- (i32.const 8)
)
- )
- (local.set $8
- (i32.add
- (local.tee $10
- (select
- (local.get $5)
- (local.tee $4
- (i32.add
- (local.get $4)
- (select
- (i32.and
- (i32.sub
- (i32.const 0)
- (local.get $11)
+ (local.set $6
+ (i32.add
+ (local.tee $11
+ (select
+ (local.get $5)
+ (local.tee $4
+ (i32.add
+ (local.get $4)
+ (select
+ (i32.and
+ (i32.sub
+ (i32.const 0)
+ (local.get $9)
+ )
+ (i32.const 7)
+ )
+ (i32.const 0)
+ (i32.and
+ (local.get $9)
+ (i32.const 7)
)
- (i32.const 7)
- )
- (i32.const 0)
- (i32.and
- (local.get $11)
- (i32.const 7)
)
)
)
- )
- (i32.lt_u
- (local.get $4)
- (local.tee $11
+ (i32.lt_u
+ (local.get $4)
(i32.add
(local.get $5)
(i32.const 16)
@@ -12104,791 +12060,790 @@
)
)
)
+ (i32.const 8)
)
- (i32.const 8)
)
- )
- (i32.store
- (i32.const 200)
- (local.tee $6
- (i32.add
- (local.tee $4
- (select
- (i32.and
- (i32.sub
- (i32.const 0)
- (local.tee $4
- (i32.add
- (local.get $1)
- (i32.const 8)
+ (i32.store
+ (i32.const 200)
+ (local.tee $9
+ (i32.add
+ (local.tee $4
+ (select
+ (i32.and
+ (i32.sub
+ (i32.const 0)
+ (local.tee $4
+ (i32.add
+ (local.get $1)
+ (i32.const 8)
+ )
)
)
+ (i32.const 7)
+ )
+ (i32.const 0)
+ (i32.and
+ (local.get $4)
+ (i32.const 7)
)
- (i32.const 7)
- )
- (i32.const 0)
- (i32.and
- (local.get $4)
- (i32.const 7)
)
)
+ (local.get $1)
)
- (local.get $1)
)
)
- )
- (i32.store
- (i32.const 188)
- (local.tee $4
- (i32.sub
- (i32.add
- (local.get $3)
- (i32.const -40)
+ (i32.store
+ (i32.const 188)
+ (local.tee $4
+ (i32.sub
+ (i32.add
+ (local.get $2)
+ (i32.const -40)
+ )
+ (local.get $4)
)
+ )
+ )
+ (i32.store offset=4
+ (local.get $9)
+ (i32.or
+ (local.get $4)
+ (i32.const 1)
+ )
+ )
+ (i32.store offset=4
+ (i32.add
(local.get $4)
+ (local.get $9)
)
+ (i32.const 40)
)
- )
- (i32.store offset=4
- (local.get $6)
- (i32.or
- (local.get $4)
- (i32.const 1)
+ (i32.store
+ (i32.const 204)
+ (i32.load
+ (i32.const 664)
+ )
)
- )
- (i32.store offset=4
- (i32.add
- (local.get $4)
+ (i32.store offset=4
+ (local.get $11)
+ (i32.const 27)
+ )
+ (i32.store offset=8
+ (local.get $11)
+ (i32.load
+ (i32.const 624)
+ )
+ )
+ (i32.store offset=4
(local.get $6)
+ (i32.load
+ (i32.const 628)
+ )
)
- (i32.const 40)
- )
- (i32.store
- (i32.const 204)
- (i32.load
- (i32.const 664)
+ (i32.store offset=8
+ (local.get $6)
+ (i32.load
+ (i32.const 632)
+ )
)
- )
- (i32.store
- (local.tee $4
- (i32.add
- (local.get $10)
- (i32.const 4)
+ (i32.store offset=12
+ (local.get $6)
+ (i32.load
+ (i32.const 636)
)
)
- (i32.const 27)
- )
- (i32.store
- (local.get $8)
- (i32.load
+ (i32.store
(i32.const 624)
+ (local.get $1)
)
- )
- (i32.store offset=4
- (local.get $8)
- (i32.load
+ (i32.store
(i32.const 628)
+ (local.get $2)
)
- )
- (i32.store offset=8
- (local.get $8)
- (i32.load
- (i32.const 632)
- )
- )
- (i32.store offset=12
- (local.get $8)
- (i32.load
+ (i32.store
(i32.const 636)
+ (i32.const 0)
)
- )
- (i32.store
- (i32.const 624)
- (local.get $1)
- )
- (i32.store
- (i32.const 628)
- (local.get $3)
- )
- (i32.store
- (i32.const 636)
- (i32.const 0)
- )
- (i32.store
- (i32.const 632)
- (local.get $8)
- )
- (local.set $1
- (i32.add
- (local.get $10)
- (i32.const 24)
- )
- )
- (loop $while-in72
(i32.store
- (local.tee $1
- (i32.add
- (local.get $1)
- (i32.const 4)
- )
- )
- (i32.const 7)
+ (i32.const 632)
+ (local.get $6)
)
- (br_if $while-in72
- (i32.lt_u
- (i32.add
- (local.get $1)
- (i32.const 4)
- )
- (local.get $2)
+ (local.set $1
+ (i32.add
+ (local.get $11)
+ (i32.const 24)
)
)
- )
- (if
- (i32.ne
- (local.get $5)
- (local.get $10)
- )
- (block
+ (loop $while-in72
(i32.store
- (local.get $4)
- (i32.and
- (i32.load
- (local.get $4)
+ (local.tee $1
+ (i32.add
+ (local.get $1)
+ (i32.const 4)
)
- (i32.const -2)
)
+ (i32.const 7)
)
- (i32.store offset=4
- (local.get $5)
- (i32.or
- (local.tee $6
- (i32.sub
- (local.get $10)
- (local.get $5)
- )
+ (br_if $while-in72
+ (i32.lt_u
+ (i32.add
+ (local.get $1)
+ (i32.const 4)
)
- (i32.const 1)
+ (local.get $3)
)
)
- (i32.store
- (local.get $10)
- (local.get $6)
- )
- (local.set $1
- (i32.shr_u
- (local.get $6)
- (i32.const 3)
- )
+ )
+ (if
+ (i32.ne
+ (local.get $5)
+ (local.get $11)
)
- (if
- (i32.lt_u
- (local.get $6)
- (i32.const 256)
+ (block
+ (i32.store offset=4
+ (local.get $11)
+ (i32.and
+ (i32.load offset=4
+ (local.get $11)
+ )
+ (i32.const -2)
+ )
)
- (block
- (local.set $2
- (i32.add
- (i32.shl
- (local.get $1)
- (i32.const 3)
+ (i32.store offset=4
+ (local.get $5)
+ (i32.or
+ (local.tee $9
+ (i32.sub
+ (local.get $11)
+ (local.get $5)
)
- (i32.const 216)
)
+ (i32.const 1)
)
- (if
- (i32.and
- (local.tee $3
- (i32.load
- (i32.const 176)
- )
- )
- (local.tee $1
+ )
+ (i32.store
+ (local.get $11)
+ (local.get $9)
+ )
+ (local.set $1
+ (i32.shr_u
+ (local.get $9)
+ (i32.const 3)
+ )
+ )
+ (if
+ (i32.lt_u
+ (local.get $9)
+ (i32.const 256)
+ )
+ (block
+ (local.set $3
+ (i32.add
(i32.shl
- (i32.const 1)
(local.get $1)
+ (i32.const 3)
)
+ (i32.const 216)
)
)
(if
- (i32.lt_u
- (local.tee $1
+ (i32.and
+ (local.tee $2
(i32.load
- (local.tee $3
- (i32.add
- (local.get $2)
- (i32.const 8)
+ (i32.const 176)
+ )
+ )
+ (local.tee $1
+ (i32.shl
+ (i32.const 1)
+ (local.get $1)
+ )
+ )
+ )
+ (block
+ (local.set $2
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ )
+ (if
+ (i32.lt_u
+ (local.tee $1
+ (i32.load offset=8
+ (local.get $3)
)
)
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ (call $_abort)
+ (block
+ (local.set $17
+ (local.get $2)
+ )
+ (local.set $7
+ (local.get $1)
+ )
)
- )
- (i32.load
- (i32.const 192)
)
)
- (call $_abort)
(block
+ (i32.store
+ (i32.const 176)
+ (i32.or
+ (local.get $1)
+ (local.get $2)
+ )
+ )
(local.set $17
- (local.get $3)
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
)
(local.set $7
- (local.get $1)
- )
- )
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.or
- (local.get $1)
(local.get $3)
)
)
- (local.set $17
- (i32.add
- (local.get $2)
- (i32.const 8)
- )
- )
- (local.set $7
- (local.get $2)
+ )
+ (i32.store
+ (local.get $17)
+ (local.get $5)
+ )
+ (i32.store
+ (i32.add
+ (local.get $7)
+ (i32.const 12)
)
+ (local.get $5)
)
+ (i32.store offset=8
+ (local.get $5)
+ (local.get $7)
+ )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $3)
+ )
+ (br $do-once40)
)
- (i32.store
- (local.get $17)
- (local.get $5)
- )
- (i32.store offset=12
- (local.get $7)
- (local.get $5)
- )
- (i32.store offset=8
- (local.get $5)
- (local.get $7)
- )
- (i32.store offset=12
- (local.get $5)
- (local.get $2)
- )
- (br $do-once40)
)
- )
- (local.set $2
- (i32.add
- (i32.shl
- (local.tee $4
- (if (result i32)
- (local.tee $1
- (i32.shr_u
- (local.get $6)
- (i32.const 8)
- )
- )
+ (local.set $3
+ (i32.add
+ (i32.shl
+ (local.tee $4
(if (result i32)
- (i32.gt_u
- (local.get $6)
- (i32.const 16777215)
+ (local.tee $1
+ (i32.shr_u
+ (local.get $9)
+ (i32.const 8)
+ )
)
- (i32.const 31)
- (block (result i32)
- (local.set $4
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $1
- (i32.shl
- (local.get $1)
- (local.tee $3
- (i32.and
- (i32.shr_u
- (i32.add
- (local.get $1)
- (i32.const 1048320)
+ (if (result i32)
+ (i32.gt_u
+ (local.get $9)
+ (i32.const 16777215)
+ )
+ (i32.const 31)
+ (block (result i32)
+ (local.set $4
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $1
+ (i32.shl
+ (local.get $1)
+ (local.tee $2
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.get $1)
+ (i32.const 1048320)
+ )
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 8)
)
- (i32.const 8)
)
)
)
+ (i32.const 520192)
)
- (i32.const 520192)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 4)
)
- (i32.const 4)
)
- )
- (local.set $2
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $1
- (i32.shl
- (local.get $1)
- (local.get $4)
+ (local.set $3
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $1
+ (i32.shl
+ (local.get $1)
+ (local.get $4)
+ )
)
+ (i32.const 245760)
)
- (i32.const 245760)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 2)
)
- (i32.const 2)
)
- )
- (i32.or
- (i32.and
- (i32.shr_u
- (local.get $6)
- (i32.add
- (local.tee $1
- (i32.add
- (i32.sub
- (i32.const 14)
- (i32.or
+ (i32.or
+ (i32.and
+ (i32.shr_u
+ (local.get $9)
+ (i32.add
+ (local.tee $1
+ (i32.add
+ (i32.sub
+ (i32.const 14)
(i32.or
+ (i32.or
+ (local.get $2)
+ (local.get $4)
+ )
(local.get $3)
- (local.get $4)
)
- (local.get $2)
)
- )
- (i32.shr_u
- (i32.shl
- (local.get $1)
- (local.get $2)
+ (i32.shr_u
+ (i32.shl
+ (local.get $1)
+ (local.get $3)
+ )
+ (i32.const 15)
)
- (i32.const 15)
)
)
+ (i32.const 7)
)
- (i32.const 7)
)
+ (i32.const 1)
+ )
+ (i32.shl
+ (local.get $1)
+ (i32.const 1)
)
- (i32.const 1)
- )
- (i32.shl
- (local.get $1)
- (i32.const 1)
)
)
)
+ (i32.const 0)
)
- (i32.const 0)
)
+ (i32.const 2)
)
- (i32.const 2)
+ (i32.const 480)
)
- (i32.const 480)
)
- )
- (i32.store offset=28
- (local.get $5)
- (local.get $4)
- )
- (i32.store offset=20
- (local.get $5)
- (i32.const 0)
- )
- (i32.store
- (local.get $11)
- (i32.const 0)
- )
- (if
- (i32.eqz
- (i32.and
- (local.tee $3
- (i32.load
- (i32.const 180)
+ (i32.store offset=28
+ (local.get $5)
+ (local.get $4)
+ )
+ (i32.store offset=20
+ (local.get $5)
+ (i32.const 0)
+ )
+ (i32.store offset=16
+ (local.get $5)
+ (i32.const 0)
+ )
+ (if
+ (i32.eqz
+ (i32.and
+ (local.tee $2
+ (i32.load
+ (i32.const 180)
+ )
)
- )
- (local.tee $1
- (i32.shl
- (i32.const 1)
- (local.get $4)
+ (local.tee $1
+ (i32.shl
+ (i32.const 1)
+ (local.get $4)
+ )
)
)
)
- )
- (block
- (i32.store
- (i32.const 180)
- (i32.or
- (local.get $1)
+ (block
+ (i32.store
+ (i32.const 180)
+ (i32.or
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+ (i32.store
(local.get $3)
+ (local.get $5)
)
+ (i32.store offset=24
+ (local.get $5)
+ (local.get $3)
+ )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $5)
+ )
+ (i32.store offset=8
+ (local.get $5)
+ (local.get $5)
+ )
+ (br $do-once40)
)
- (i32.store
- (local.get $2)
- (local.get $5)
- )
- (i32.store offset=24
- (local.get $5)
- (local.get $2)
- )
- (i32.store offset=12
- (local.get $5)
- (local.get $5)
- )
- (i32.store offset=8
- (local.get $5)
- (local.get $5)
- )
- (br $do-once40)
)
- )
- (local.set $4
- (i32.shl
- (local.get $6)
- (select
- (i32.const 0)
- (i32.sub
- (i32.const 25)
- (i32.shr_u
+ (local.set $4
+ (i32.shl
+ (local.get $9)
+ (select
+ (i32.const 0)
+ (i32.sub
+ (i32.const 25)
+ (i32.shr_u
+ (local.get $4)
+ (i32.const 1)
+ )
+ )
+ (i32.eq
(local.get $4)
- (i32.const 1)
+ (i32.const 31)
)
)
- (i32.eq
- (local.get $4)
- (i32.const 31)
- )
)
)
- )
- (local.set $1
- (i32.load
- (local.get $2)
+ (local.set $1
+ (i32.load
+ (local.get $3)
+ )
)
- )
- (block $__rjto$9
- (block $__rjti$9
- (loop $while-in74
- (br_if $__rjti$9
- (i32.eq
- (i32.and
- (i32.load offset=4
- (local.get $1)
+ (block $__rjto$9
+ (block $__rjti$9
+ (loop $while-in74
+ (br_if $__rjti$9
+ (i32.eq
+ (i32.and
+ (i32.load
+ (i32.add
+ (local.get $1)
+ (i32.const 4)
+ )
+ )
+ (i32.const -8)
)
- (i32.const -8)
+ (local.get $9)
)
- (local.get $6)
)
- )
- (local.set $2
- (i32.shl
- (local.get $4)
- (i32.const 1)
+ (local.set $3
+ (i32.shl
+ (local.get $4)
+ (i32.const 1)
+ )
)
- )
- (if
- (local.tee $3
- (i32.load
- (local.tee $4
- (i32.add
+ (if
+ (local.tee $2
+ (i32.load
+ (local.tee $4
(i32.add
- (local.get $1)
- (i32.const 16)
- )
- (i32.shl
- (i32.shr_u
- (local.get $4)
- (i32.const 31)
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
+ (i32.shl
+ (i32.shr_u
+ (local.get $4)
+ (i32.const 31)
+ )
+ (i32.const 2)
)
- (i32.const 2)
)
)
)
)
+ (block
+ (local.set $4
+ (local.get $3)
+ )
+ (local.set $1
+ (local.get $2)
+ )
+ (br $while-in74)
+ )
+ )
+ )
+ (if
+ (i32.lt_u
+ (local.get $4)
+ (i32.load
+ (i32.const 192)
+ )
)
+ (call $_abort)
(block
- (local.set $4
- (local.get $2)
+ (i32.store
+ (local.get $4)
+ (local.get $5)
)
- (local.set $1
- (local.get $3)
+ (i32.store offset=24
+ (local.get $5)
+ (local.get $1)
+ )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $5)
+ )
+ (i32.store offset=8
+ (local.get $5)
+ (local.get $5)
)
- (br $while-in74)
+ (br $do-once40)
)
)
+ (br $__rjto$9)
)
(if
- (i32.lt_u
- (local.get $4)
- (i32.load
- (i32.const 192)
+ (i32.and
+ (i32.ge_u
+ (local.tee $3
+ (i32.load offset=8
+ (local.get $1)
+ )
+ )
+ (local.tee $2
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ )
+ (i32.ge_u
+ (local.get $1)
+ (local.get $2)
)
)
- (call $_abort)
(block
- (i32.store
- (local.get $4)
+ (i32.store offset=12
+ (local.get $3)
(local.get $5)
)
- (i32.store offset=24
- (local.get $5)
+ (i32.store offset=8
(local.get $1)
- )
- (i32.store offset=12
- (local.get $5)
(local.get $5)
)
(i32.store offset=8
(local.get $5)
- (local.get $5)
+ (local.get $3)
)
- (br $do-once40)
- )
- )
- (br $__rjto$9)
- )
- (if
- (i32.and
- (i32.ge_u
- (local.tee $4
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $1)
- (i32.const 8)
- )
- )
- )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $1)
)
- (local.tee $3
- (i32.load
- (i32.const 192)
- )
+ (i32.store offset=24
+ (local.get $5)
+ (i32.const 0)
)
)
- (i32.ge_u
- (local.get $1)
- (local.get $3)
- )
- )
- (block
- (i32.store offset=12
- (local.get $4)
- (local.get $5)
- )
- (i32.store
- (local.get $2)
- (local.get $5)
- )
- (i32.store offset=8
- (local.get $5)
- (local.get $4)
- )
- (i32.store offset=12
- (local.get $5)
- (local.get $1)
- )
- (i32.store offset=24
- (local.get $5)
- (i32.const 0)
- )
+ (call $_abort)
)
- (call $_abort)
)
)
)
)
- )
- (block
- (if
- (i32.or
- (i32.eqz
- (local.tee $2
- (i32.load
- (i32.const 192)
+ (block
+ (if
+ (i32.or
+ (i32.eqz
+ (local.tee $3
+ (i32.load
+ (i32.const 192)
+ )
)
)
+ (i32.lt_u
+ (local.get $1)
+ (local.get $3)
+ )
)
- (i32.lt_u
+ (i32.store
+ (i32.const 192)
(local.get $1)
- (local.get $2)
)
)
(i32.store
- (i32.const 192)
+ (i32.const 624)
(local.get $1)
)
- )
- (i32.store
- (i32.const 624)
- (local.get $1)
- )
- (i32.store
- (i32.const 628)
- (local.get $3)
- )
- (i32.store
- (i32.const 636)
- (i32.const 0)
- )
- (i32.store
- (i32.const 212)
- (i32.load
- (i32.const 648)
+ (i32.store
+ (i32.const 628)
+ (local.get $2)
)
- )
- (i32.store
- (i32.const 208)
- (i32.const -1)
- )
- (local.set $2
- (i32.const 0)
- )
- (loop $while-in43
- (i32.store offset=12
- (local.tee $4
- (i32.add
- (i32.shl
- (local.get $2)
- (i32.const 3)
- )
- (i32.const 216)
- )
+ (i32.store
+ (i32.const 636)
+ (i32.const 0)
+ )
+ (i32.store
+ (i32.const 212)
+ (i32.load
+ (i32.const 648)
)
- (local.get $4)
)
- (i32.store offset=8
- (local.get $4)
- (local.get $4)
+ (i32.store
+ (i32.const 208)
+ (i32.const -1)
)
- (br_if $while-in43
- (i32.ne
- (local.tee $2
+ (local.set $3
+ (i32.const 0)
+ )
+ (loop $while-in43
+ (i32.store offset=12
+ (local.tee $4
(i32.add
- (local.get $2)
- (i32.const 1)
+ (i32.shl
+ (local.get $3)
+ (i32.const 3)
+ )
+ (i32.const 216)
)
)
- (i32.const 32)
+ (local.get $4)
+ )
+ (i32.store offset=8
+ (local.get $4)
+ (local.get $4)
+ )
+ (br_if $while-in43
+ (i32.ne
+ (local.tee $3
+ (i32.add
+ (local.get $3)
+ (i32.const 1)
+ )
+ )
+ (i32.const 32)
+ )
)
)
- )
- (i32.store
- (i32.const 200)
- (local.tee $4
- (i32.add
- (local.tee $2
- (select
- (i32.and
- (i32.sub
- (i32.const 0)
- (local.tee $2
- (i32.add
- (local.get $1)
- (i32.const 8)
+ (i32.store
+ (i32.const 200)
+ (local.tee $4
+ (i32.add
+ (local.tee $3
+ (select
+ (i32.and
+ (i32.sub
+ (i32.const 0)
+ (local.tee $3
+ (i32.add
+ (local.get $1)
+ (i32.const 8)
+ )
)
)
+ (i32.const 7)
+ )
+ (i32.const 0)
+ (i32.and
+ (local.get $3)
+ (i32.const 7)
)
- (i32.const 7)
- )
- (i32.const 0)
- (i32.and
- (local.get $2)
- (i32.const 7)
)
)
+ (local.get $1)
)
- (local.get $1)
)
)
- )
- (i32.store
- (i32.const 188)
- (local.tee $1
- (i32.sub
- (i32.add
+ (i32.store
+ (i32.const 188)
+ (local.tee $1
+ (i32.sub
+ (i32.add
+ (local.get $2)
+ (i32.const -40)
+ )
(local.get $3)
- (i32.const -40)
)
- (local.get $2)
)
)
- )
- (i32.store offset=4
- (local.get $4)
- (i32.or
- (local.get $1)
- (i32.const 1)
- )
- )
- (i32.store offset=4
- (i32.add
- (local.get $1)
+ (i32.store offset=4
(local.get $4)
+ (i32.or
+ (local.get $1)
+ (i32.const 1)
+ )
)
- (i32.const 40)
- )
- (i32.store
- (i32.const 204)
- (i32.load
- (i32.const 664)
+ (i32.store offset=4
+ (i32.add
+ (local.get $1)
+ (local.get $4)
+ )
+ (i32.const 40)
+ )
+ (i32.store
+ (i32.const 204)
+ (i32.load
+ (i32.const 664)
+ )
)
)
)
- )
- (br_if $folding-inner0
- (i32.gt_u
- (local.tee $1
- (i32.load
- (i32.const 188)
+ (br_if $folding-inner0
+ (i32.gt_u
+ (local.tee $1
+ (i32.load
+ (i32.const 188)
+ )
)
+ (local.get $0)
)
- (local.get $0)
)
)
+ (i32.store
+ (call $___errno_location)
+ (i32.const 12)
+ )
+ (return
+ (i32.const 0)
+ )
)
(i32.store
- (call $___errno_location)
- (i32.const 12)
- )
- (return
- (i32.const 0)
- )
- )
- (i32.store
- (i32.const 188)
- (local.tee $3
- (i32.sub
- (local.get $1)
- (local.get $0)
+ (i32.const 188)
+ (local.tee $2
+ (i32.sub
+ (local.get $1)
+ (local.get $0)
+ )
)
)
- )
- (i32.store
- (i32.const 200)
- (local.tee $1
- (i32.add
- (local.tee $2
- (i32.load
- (i32.const 200)
+ (i32.store
+ (i32.const 200)
+ (local.tee $1
+ (i32.add
+ (local.tee $3
+ (i32.load
+ (i32.const 200)
+ )
)
+ (local.get $0)
)
- (local.get $0)
)
)
- )
- (i32.store offset=4
- (local.get $1)
- (i32.or
- (local.get $3)
- (i32.const 1)
+ (i32.store offset=4
+ (local.get $1)
+ (i32.or
+ (local.get $2)
+ (i32.const 1)
+ )
)
- )
- (i32.store offset=4
- (local.get $2)
- (i32.or
- (local.get $0)
- (i32.const 3)
+ (i32.store offset=4
+ (local.get $3)
+ (i32.or
+ (local.get $0)
+ (i32.const 3)
+ )
)
)
(i32.add
- (local.get $2)
+ (local.get $3)
(i32.const 8)
)
)
@@ -12932,9 +12887,9 @@
)
(if
(i32.eq
- (local.tee $5
+ (local.tee $4
(i32.and
- (local.tee $7
+ (local.tee $8
(i32.load
(i32.add
(local.get $0)
@@ -12949,12 +12904,12 @@
)
(call $_abort)
)
- (local.set $8
+ (local.set $7
(i32.add
(local.get $1)
(local.tee $0
(i32.and
- (local.get $7)
+ (local.get $8)
(i32.const -8)
)
)
@@ -12962,26 +12917,26 @@
)
(if
(i32.and
- (local.get $7)
+ (local.get $8)
(i32.const 1)
)
(block
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
)
(block $do-once
- (local.set $7
+ (local.set $8
(i32.load
(local.get $1)
)
)
(if
(i32.eqz
- (local.get $5)
+ (local.get $4)
)
(return)
)
@@ -12990,7 +12945,7 @@
(local.tee $1
(i32.sub
(local.get $1)
- (local.get $7)
+ (local.get $8)
)
)
(local.get $11)
@@ -13000,7 +12955,7 @@
(local.set $0
(i32.add
(local.get $0)
- (local.get $7)
+ (local.get $8)
)
)
(if
@@ -13014,14 +12969,9 @@
(if
(i32.ne
(i32.and
- (local.tee $3
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $8)
- (i32.const 4)
- )
- )
+ (local.tee $2
+ (i32.load offset=4
+ (local.get $7)
)
)
(i32.const 3)
@@ -13029,10 +12979,10 @@
(i32.const 3)
)
(block
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
(br $do-once)
@@ -13042,10 +12992,10 @@
(i32.const 184)
(local.get $0)
)
- (i32.store
- (local.get $2)
+ (i32.store offset=4
+ (local.get $7)
(i32.and
- (local.get $3)
+ (local.get $2)
(i32.const -2)
)
)
@@ -13066,15 +13016,15 @@
(return)
)
)
- (local.set $5
+ (local.set $4
(i32.shr_u
- (local.get $7)
+ (local.get $8)
(i32.const 3)
)
)
(if
(i32.lt_u
- (local.get $7)
+ (local.get $8)
(i32.const 256)
)
(block
@@ -13085,15 +13035,15 @@
)
(if
(i32.ne
- (local.tee $2
+ (local.tee $3
(i32.load offset=8
(local.get $1)
)
)
- (local.tee $3
+ (local.tee $2
(i32.add
(i32.shl
- (local.get $5)
+ (local.get $4)
(i32.const 3)
)
(i32.const 216)
@@ -13103,7 +13053,7 @@
(block
(if
(i32.lt_u
- (local.get $2)
+ (local.get $3)
(local.get $11)
)
(call $_abort)
@@ -13112,7 +13062,7 @@
(i32.ne
(local.get $1)
(i32.load offset=12
- (local.get $2)
+ (local.get $3)
)
)
(call $_abort)
@@ -13121,7 +13071,7 @@
)
(if
(i32.eq
- (local.get $2)
+ (local.get $3)
(local.get $6)
)
(block
@@ -13134,16 +13084,16 @@
(i32.xor
(i32.shl
(i32.const 1)
- (local.get $5)
+ (local.get $4)
)
(i32.const -1)
)
)
)
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
(br $do-once)
@@ -13151,10 +13101,10 @@
)
(if
(i32.eq
- (local.get $3)
+ (local.get $2)
(local.get $6)
)
- (local.set $4
+ (local.set $5
(i32.add
(local.get $6)
(i32.const 8)
@@ -13168,50 +13118,51 @@
)
(call $_abort)
)
+ (local.set $2
+ (i32.add
+ (local.get $6)
+ (i32.const 8)
+ )
+ )
(if
(i32.eq
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $6)
- (i32.const 8)
- )
- )
+ (i32.load offset=8
+ (local.get $6)
)
(local.get $1)
)
- (local.set $4
- (local.get $3)
+ (local.set $5
+ (local.get $2)
)
(call $_abort)
)
)
)
(i32.store offset=12
- (local.get $2)
+ (local.get $3)
(local.get $6)
)
(i32.store
- (local.get $4)
- (local.get $2)
+ (local.get $5)
+ (local.get $3)
)
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
(br $do-once)
)
)
- (local.set $12
+ (local.set $10
(i32.load offset=24
(local.get $1)
)
)
(if
(i32.eq
- (local.tee $4
+ (local.tee $5
(i32.load offset=12
(local.get $1)
)
@@ -13219,78 +13170,79 @@
(local.get $1)
)
(block $do-once0
+ (local.set $5
+ (i32.add
+ (local.tee $8
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
+ )
+ (i32.const 4)
+ )
+ )
(if
(i32.eqz
- (local.tee $5
- (i32.load
- (local.tee $4
- (i32.add
- (local.tee $7
- (i32.add
- (local.get $1)
- (i32.const 16)
- )
- )
- (i32.const 4)
- )
- )
+ (local.tee $4
+ (i32.load offset=4
+ (local.get $8)
)
)
)
(block
(br_if $do-once0
(i32.eqz
- (local.tee $5
- (i32.load
- (local.get $7)
+ (local.tee $4
+ (i32.load offset=16
+ (local.get $1)
)
)
)
)
- (local.set $4
- (local.get $7)
+ (local.set $5
+ (local.get $8)
)
)
)
(loop $while-in
(if
- (local.tee $7
+ (local.tee $8
(i32.load
- (local.tee $10
+ (local.tee $12
(i32.add
- (local.get $5)
+ (local.get $4)
(i32.const 20)
)
)
)
)
(block
- (local.set $5
- (local.get $7)
- )
(local.set $4
- (local.get $10)
+ (local.get $8)
+ )
+ (local.set $5
+ (local.get $12)
)
(br $while-in)
)
)
(if
- (local.tee $7
+ (local.tee $8
(i32.load
- (local.tee $10
+ (local.tee $12
(i32.add
- (local.get $5)
+ (local.get $4)
(i32.const 16)
)
)
)
)
(block
- (local.set $5
- (local.get $7)
- )
(local.set $4
- (local.get $10)
+ (local.get $8)
+ )
+ (local.set $5
+ (local.get $12)
)
(br $while-in)
)
@@ -13298,17 +13250,17 @@
)
(if
(i32.lt_u
- (local.get $4)
+ (local.get $5)
(local.get $11)
)
(call $_abort)
(block
(i32.store
- (local.get $4)
+ (local.get $5)
(i32.const 0)
)
(local.set $6
- (local.get $5)
+ (local.get $4)
)
)
)
@@ -13316,7 +13268,7 @@
(block
(if
(i32.lt_u
- (local.tee $10
+ (local.tee $4
(i32.load offset=8
(local.get $1)
)
@@ -13328,40 +13280,30 @@
(if
(i32.ne
(local.get $1)
- (i32.load
- (local.tee $7
- (i32.add
- (local.get $10)
- (i32.const 12)
- )
- )
+ (i32.load offset=12
+ (local.get $4)
)
)
(call $_abort)
)
(if
(i32.eq
- (i32.load
- (local.tee $5
- (i32.add
- (local.get $4)
- (i32.const 8)
- )
- )
+ (i32.load offset=8
+ (local.get $5)
)
(local.get $1)
)
(block
- (i32.store
- (local.get $7)
+ (i32.store offset=12
(local.get $4)
+ (local.get $5)
)
- (i32.store
+ (i32.store offset=8
(local.get $5)
- (local.get $10)
+ (local.get $4)
)
(local.set $6
- (local.get $4)
+ (local.get $5)
)
)
(call $_abort)
@@ -13369,15 +13311,15 @@
)
)
(if
- (local.get $12)
+ (local.get $10)
(block
(if
(i32.eq
(i32.load
- (local.tee $4
+ (local.tee $5
(i32.add
(i32.shl
- (local.tee $5
+ (local.tee $4
(i32.load offset=28
(local.get $1)
)
@@ -13392,7 +13334,7 @@
)
(block
(i32.store
- (local.get $4)
+ (local.get $5)
(local.get $6)
)
(if
@@ -13409,16 +13351,16 @@
(i32.xor
(i32.shl
(i32.const 1)
- (local.get $5)
+ (local.get $4)
)
(i32.const -1)
)
)
)
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
(br $do-once)
@@ -13428,7 +13370,7 @@
(block
(if
(i32.lt_u
- (local.get $12)
+ (local.get $10)
(i32.load
(i32.const 192)
)
@@ -13437,22 +13379,17 @@
)
(if
(i32.eq
- (i32.load
- (local.tee $4
- (i32.add
- (local.get $12)
- (i32.const 16)
- )
- )
+ (i32.load offset=16
+ (local.get $10)
)
(local.get $1)
)
- (i32.store
- (local.get $4)
+ (i32.store offset=16
+ (local.get $10)
(local.get $6)
)
(i32.store offset=20
- (local.get $12)
+ (local.get $10)
(local.get $6)
)
)
@@ -13461,10 +13398,10 @@
(local.get $6)
)
(block
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
(br $do-once)
@@ -13483,85 +13420,92 @@
)
(call $_abort)
)
- (i32.store offset=24
- (local.get $6)
- (local.get $12)
+ (i32.store
+ (i32.add
+ (local.get $6)
+ (i32.const 24)
+ )
+ (local.get $10)
)
(if
- (local.tee $7
- (i32.load
- (local.tee $4
- (i32.add
- (local.get $1)
- (i32.const 16)
- )
- )
+ (local.tee $4
+ (i32.load offset=16
+ (local.get $1)
)
)
(if
(i32.lt_u
- (local.get $7)
+ (local.get $4)
(local.get $5)
)
(call $_abort)
(block
- (i32.store offset=16
- (local.get $6)
- (local.get $7)
+ (i32.store
+ (i32.add
+ (local.get $6)
+ (i32.const 16)
+ )
+ (local.get $4)
)
(i32.store offset=24
- (local.get $7)
+ (local.get $4)
(local.get $6)
)
)
)
)
(if
- (local.tee $4
+ (local.tee $5
(i32.load offset=4
- (local.get $4)
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
)
)
(if
(i32.lt_u
- (local.get $4)
+ (local.get $5)
(i32.load
(i32.const 192)
)
)
(call $_abort)
(block
- (i32.store offset=20
- (local.get $6)
- (local.get $4)
+ (i32.store
+ (i32.add
+ (local.get $6)
+ (i32.const 20)
+ )
+ (local.get $5)
)
(i32.store offset=24
- (local.get $4)
+ (local.get $5)
(local.get $6)
)
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
)
)
(block
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
)
)
)
(block
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
)
@@ -13570,22 +13514,17 @@
)
(if
(i32.ge_u
- (local.get $2)
- (local.get $8)
+ (local.get $3)
+ (local.get $7)
)
(call $_abort)
)
(if
(i32.eqz
(i32.and
- (local.tee $1
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $8)
- (i32.const 4)
- )
- )
+ (local.tee $0
+ (i32.load offset=4
+ (local.get $7)
)
)
(i32.const 1)
@@ -13595,21 +13534,24 @@
)
(if
(i32.and
- (local.get $1)
+ (local.get $0)
(i32.const 2)
)
(block
- (i32.store
- (local.get $0)
+ (i32.store offset=4
+ (local.get $7)
(i32.and
- (local.get $1)
+ (local.get $0)
(i32.const -2)
)
)
- (i32.store offset=4
- (local.get $2)
- (i32.or
+ (i32.store
+ (i32.add
(local.get $3)
+ (i32.const 4)
+ )
+ (i32.or
+ (local.get $2)
(i32.const 1)
)
)
@@ -13618,7 +13560,7 @@
(local.get $2)
(local.get $3)
)
- (local.get $3)
+ (local.get $2)
)
)
(block
@@ -13627,7 +13569,7 @@
(i32.load
(i32.const 200)
)
- (local.get $8)
+ (local.get $7)
)
(block
(i32.store
@@ -13637,16 +13579,19 @@
(i32.load
(i32.const 188)
)
- (local.get $3)
+ (local.get $2)
)
)
)
(i32.store
(i32.const 200)
- (local.get $2)
+ (local.get $3)
)
- (i32.store offset=4
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
(i32.or
(local.get $0)
(i32.const 1)
@@ -13654,7 +13599,7 @@
)
(if
(i32.ne
- (local.get $2)
+ (local.get $3)
(i32.load
(i32.const 196)
)
@@ -13677,7 +13622,7 @@
(i32.load
(i32.const 196)
)
- (local.get $8)
+ (local.get $7)
)
(block
(i32.store
@@ -13687,16 +13632,19 @@
(i32.load
(i32.const 184)
)
- (local.get $3)
+ (local.get $2)
)
)
)
(i32.store
(i32.const 196)
- (local.get $2)
+ (local.get $3)
)
- (i32.store offset=4
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
(i32.or
(local.get $0)
(i32.const 1)
@@ -13705,51 +13653,51 @@
(i32.store
(i32.add
(local.get $0)
- (local.get $2)
+ (local.get $3)
)
(local.get $0)
)
(return)
)
)
- (local.set $5
+ (local.set $4
(i32.add
(i32.and
- (local.get $1)
+ (local.get $0)
(i32.const -8)
)
- (local.get $3)
+ (local.get $2)
)
)
- (local.set $3
+ (local.set $2
(i32.shr_u
- (local.get $1)
+ (local.get $0)
(i32.const 3)
)
)
(block $do-once4
(if
(i32.lt_u
- (local.get $1)
+ (local.get $0)
(i32.const 256)
)
(block
- (local.set $4
+ (local.set $5
(i32.load offset=12
- (local.get $8)
+ (local.get $7)
)
)
(if
(i32.ne
(local.tee $1
(i32.load offset=8
- (local.get $8)
+ (local.get $7)
)
)
(local.tee $0
(i32.add
(i32.shl
- (local.get $3)
+ (local.get $2)
(i32.const 3)
)
(i32.const 216)
@@ -13768,7 +13716,7 @@
)
(if
(i32.ne
- (local.get $8)
+ (local.get $7)
(i32.load offset=12
(local.get $1)
)
@@ -13780,7 +13728,7 @@
(if
(i32.eq
(local.get $1)
- (local.get $4)
+ (local.get $5)
)
(block
(i32.store
@@ -13792,7 +13740,7 @@
(i32.xor
(i32.shl
(i32.const 1)
- (local.get $3)
+ (local.get $2)
)
(i32.const -1)
)
@@ -13804,35 +13752,36 @@
(if
(i32.eq
(local.get $0)
- (local.get $4)
+ (local.get $5)
)
(local.set $14
(i32.add
- (local.get $4)
+ (local.get $5)
(i32.const 8)
)
)
(block
(if
(i32.lt_u
- (local.get $4)
+ (local.get $5)
(i32.load
(i32.const 192)
)
)
(call $_abort)
)
+ (local.set $0
+ (i32.add
+ (local.get $5)
+ (i32.const 8)
+ )
+ )
(if
(i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $4)
- (i32.const 8)
- )
- )
+ (i32.load offset=8
+ (local.get $5)
)
- (local.get $8)
+ (local.get $7)
)
(local.set $14
(local.get $0)
@@ -13843,7 +13792,7 @@
)
(i32.store offset=12
(local.get $1)
- (local.get $4)
+ (local.get $5)
)
(i32.store
(local.get $14)
@@ -13853,43 +13802,44 @@
(block
(local.set $6
(i32.load offset=24
- (local.get $8)
+ (local.get $7)
)
)
(if
(i32.eq
(local.tee $0
(i32.load offset=12
- (local.get $8)
+ (local.get $7)
)
)
- (local.get $8)
+ (local.get $7)
)
(block $do-once6
+ (local.set $0
+ (i32.add
+ (local.tee $1
+ (i32.add
+ (local.get $7)
+ (i32.const 16)
+ )
+ )
+ (i32.const 4)
+ )
+ )
(if
(i32.eqz
- (local.tee $3
- (i32.load
- (local.tee $0
- (i32.add
- (local.tee $1
- (i32.add
- (local.get $8)
- (i32.const 16)
- )
- )
- (i32.const 4)
- )
- )
+ (local.tee $2
+ (i32.load offset=4
+ (local.get $1)
)
)
)
(block
(br_if $do-once6
(i32.eqz
- (local.tee $3
- (i32.load
- (local.get $1)
+ (local.tee $2
+ (i32.load offset=16
+ (local.get $7)
)
)
)
@@ -13903,20 +13853,20 @@
(if
(local.tee $1
(i32.load
- (local.tee $4
+ (local.tee $5
(i32.add
- (local.get $3)
+ (local.get $2)
(i32.const 20)
)
)
)
)
(block
- (local.set $3
+ (local.set $2
(local.get $1)
)
(local.set $0
- (local.get $4)
+ (local.get $5)
)
(br $while-in9)
)
@@ -13924,20 +13874,20 @@
(if
(local.tee $1
(i32.load
- (local.tee $4
+ (local.tee $5
(i32.add
- (local.get $3)
+ (local.get $2)
(i32.const 16)
)
)
)
)
(block
- (local.set $3
+ (local.set $2
(local.get $1)
)
(local.set $0
- (local.get $4)
+ (local.get $5)
)
(br $while-in9)
)
@@ -13957,7 +13907,7 @@
(i32.const 0)
)
(local.set $9
- (local.get $3)
+ (local.get $2)
)
)
)
@@ -13965,9 +13915,9 @@
(block
(if
(i32.lt_u
- (local.tee $4
+ (local.tee $2
(i32.load offset=8
- (local.get $8)
+ (local.get $7)
)
)
(i32.load
@@ -13978,38 +13928,28 @@
)
(if
(i32.ne
- (local.get $8)
- (i32.load
- (local.tee $1
- (i32.add
- (local.get $4)
- (i32.const 12)
- )
- )
+ (local.get $7)
+ (i32.load offset=12
+ (local.get $2)
)
)
(call $_abort)
)
(if
(i32.eq
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
+ (i32.load offset=8
+ (local.get $0)
)
- (local.get $8)
+ (local.get $7)
)
(block
- (i32.store
- (local.get $1)
+ (i32.store offset=12
+ (local.get $2)
(local.get $0)
)
- (i32.store
- (local.get $3)
- (local.get $4)
+ (i32.store offset=8
+ (local.get $0)
+ (local.get $2)
)
(local.set $9
(local.get $0)
@@ -14028,9 +13968,9 @@
(local.tee $0
(i32.add
(i32.shl
- (local.tee $3
+ (local.tee $2
(i32.load offset=28
- (local.get $8)
+ (local.get $7)
)
)
(i32.const 2)
@@ -14039,7 +13979,7 @@
)
)
)
- (local.get $8)
+ (local.get $7)
)
(block
(i32.store
@@ -14060,7 +14000,7 @@
(i32.xor
(i32.shl
(i32.const 1)
- (local.get $3)
+ (local.get $2)
)
(i32.const -1)
)
@@ -14082,18 +14022,13 @@
)
(if
(i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $6)
- (i32.const 16)
- )
- )
+ (i32.load offset=16
+ (local.get $6)
)
- (local.get $8)
+ (local.get $7)
)
- (i32.store
- (local.get $0)
+ (i32.store offset=16
+ (local.get $6)
(local.get $9)
)
(i32.store offset=20
@@ -14111,7 +14046,7 @@
(if
(i32.lt_u
(local.get $9)
- (local.tee $3
+ (local.tee $0
(i32.load
(i32.const 192)
)
@@ -14119,34 +14054,35 @@
)
(call $_abort)
)
- (i32.store offset=24
- (local.get $9)
+ (i32.store
+ (i32.add
+ (local.get $9)
+ (i32.const 24)
+ )
(local.get $6)
)
(if
- (local.tee $1
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $8)
- (i32.const 16)
- )
- )
+ (local.tee $2
+ (i32.load offset=16
+ (local.get $7)
)
)
(if
(i32.lt_u
- (local.get $1)
- (local.get $3)
+ (local.get $2)
+ (local.get $0)
)
(call $_abort)
(block
- (i32.store offset=16
- (local.get $9)
- (local.get $1)
+ (i32.store
+ (i32.add
+ (local.get $9)
+ (i32.const 16)
+ )
+ (local.get $2)
)
(i32.store offset=24
- (local.get $1)
+ (local.get $2)
(local.get $9)
)
)
@@ -14155,7 +14091,10 @@
(if
(local.tee $0
(i32.load offset=4
- (local.get $0)
+ (i32.add
+ (local.get $7)
+ (i32.const 16)
+ )
)
)
(if
@@ -14167,8 +14106,11 @@
)
(call $_abort)
(block
- (i32.store offset=20
- (local.get $9)
+ (i32.store
+ (i32.add
+ (local.get $9)
+ (i32.const 20)
+ )
(local.get $0)
)
(i32.store offset=24
@@ -14183,49 +14125,52 @@
)
)
)
- (i32.store offset=4
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
(i32.or
- (local.get $5)
+ (local.get $4)
(i32.const 1)
)
)
(i32.store
(i32.add
- (local.get $2)
- (local.get $5)
+ (local.get $3)
+ (local.get $4)
)
- (local.get $5)
+ (local.get $4)
)
- (local.set $3
+ (local.set $2
(if (result i32)
(i32.eq
(i32.load
(i32.const 196)
)
- (local.get $2)
+ (local.get $3)
)
(block
(i32.store
(i32.const 184)
- (local.get $5)
+ (local.get $4)
)
(return)
)
- (local.get $5)
+ (local.get $4)
)
)
)
)
(local.set $0
(i32.shr_u
- (local.get $3)
+ (local.get $2)
(i32.const 3)
)
)
(if
(i32.lt_u
- (local.get $3)
+ (local.get $2)
(i32.const 256)
)
(block
@@ -14240,7 +14185,7 @@
)
(if
(i32.and
- (local.tee $3
+ (local.tee $2
(i32.load
(i32.const 176)
)
@@ -14252,29 +14197,32 @@
)
)
)
- (if
- (i32.lt_u
- (local.tee $0
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $1)
- (i32.const 8)
- )
- )
- )
- )
- (i32.load
- (i32.const 192)
+ (block
+ (local.set $2
+ (i32.add
+ (local.get $1)
+ (i32.const 8)
)
)
- (call $_abort)
- (block
- (local.set $15
- (local.get $3)
+ (if
+ (i32.lt_u
+ (local.tee $0
+ (i32.load offset=8
+ (local.get $1)
+ )
+ )
+ (i32.load
+ (i32.const 192)
+ )
)
- (local.set $13
- (local.get $0)
+ (call $_abort)
+ (block
+ (local.set $15
+ (local.get $2)
+ )
+ (local.set $13
+ (local.get $0)
+ )
)
)
)
@@ -14283,7 +14231,7 @@
(i32.const 176)
(i32.or
(local.get $0)
- (local.get $3)
+ (local.get $2)
)
)
(local.set $15
@@ -14299,42 +14247,51 @@
)
(i32.store
(local.get $15)
- (local.get $2)
+ (local.get $3)
)
- (i32.store offset=12
- (local.get $13)
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $13)
+ (i32.const 12)
+ )
+ (local.get $3)
)
- (i32.store offset=8
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
(local.get $13)
)
- (i32.store offset=12
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 12)
+ )
(local.get $1)
)
(return)
)
)
- (local.set $4
+ (local.set $5
(i32.add
(i32.shl
- (local.tee $5
+ (local.tee $4
(if (result i32)
(local.tee $0
(i32.shr_u
- (local.get $3)
+ (local.get $2)
(i32.const 8)
)
)
(if (result i32)
(i32.gt_u
- (local.get $3)
+ (local.get $2)
(i32.const 16777215)
)
(i32.const 31)
(block (result i32)
- (local.set $5
+ (local.set $4
(i32.and
(i32.shr_u
(i32.add
@@ -14362,14 +14319,14 @@
(i32.const 4)
)
)
- (local.set $4
+ (local.set $5
(i32.and
(i32.shr_u
(i32.add
(local.tee $0
(i32.shl
(local.get $0)
- (local.get $5)
+ (local.get $4)
)
)
(i32.const 245760)
@@ -14382,7 +14339,7 @@
(i32.or
(i32.and
(i32.shr_u
- (local.get $3)
+ (local.get $2)
(i32.add
(local.tee $0
(i32.add
@@ -14391,15 +14348,15 @@
(i32.or
(i32.or
(local.get $1)
- (local.get $5)
+ (local.get $4)
)
- (local.get $4)
+ (local.get $5)
)
)
(i32.shr_u
(i32.shl
(local.get $0)
- (local.get $4)
+ (local.get $5)
)
(i32.const 15)
)
@@ -14425,16 +14382,25 @@
(i32.const 480)
)
)
- (i32.store offset=28
- (local.get $2)
- (local.get $5)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 28)
+ )
+ (local.get $4)
)
- (i32.store offset=20
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 20)
+ )
(i32.const 0)
)
- (i32.store offset=16
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 16)
+ )
(i32.const 0)
)
(if
@@ -14447,25 +14413,25 @@
(local.tee $0
(i32.shl
(i32.const 1)
- (local.get $5)
+ (local.get $4)
)
)
)
(block $do-once12
- (local.set $5
+ (local.set $4
(i32.shl
- (local.get $3)
+ (local.get $2)
(select
(i32.const 0)
(i32.sub
(i32.const 25)
(i32.shr_u
- (local.get $5)
+ (local.get $4)
(i32.const 1)
)
)
(i32.eq
- (local.get $5)
+ (local.get $4)
(i32.const 31)
)
)
@@ -14473,7 +14439,7 @@
)
(local.set $0
(i32.load
- (local.get $4)
+ (local.get $5)
)
)
(block $__rjto$1
@@ -14482,24 +14448,27 @@
(br_if $__rjti$1
(i32.eq
(i32.and
- (i32.load offset=4
- (local.get $0)
+ (i32.load
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
)
(i32.const -8)
)
- (local.get $3)
+ (local.get $2)
)
)
- (local.set $4
+ (local.set $5
(i32.shl
- (local.get $5)
+ (local.get $4)
(i32.const 1)
)
)
(if
(local.tee $1
(i32.load
- (local.tee $5
+ (local.tee $4
(i32.add
(i32.add
(local.get $0)
@@ -14507,7 +14476,7 @@
)
(i32.shl
(i32.shr_u
- (local.get $5)
+ (local.get $4)
(i32.const 31)
)
(i32.const 2)
@@ -14517,8 +14486,8 @@
)
)
(block
- (local.set $5
- (local.get $4)
+ (local.set $4
+ (local.get $5)
)
(local.set $0
(local.get $1)
@@ -14529,7 +14498,7 @@
)
(if
(i32.lt_u
- (local.get $5)
+ (local.get $4)
(i32.load
(i32.const 192)
)
@@ -14537,20 +14506,29 @@
(call $_abort)
(block
(i32.store
- (local.get $5)
- (local.get $2)
+ (local.get $4)
+ (local.get $3)
)
- (i32.store offset=24
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 24)
+ )
(local.get $0)
)
- (i32.store offset=12
- (local.get $2)
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 12)
+ )
+ (local.get $3)
)
- (i32.store offset=8
- (local.get $2)
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (local.get $3)
)
(br $do-once12)
)
@@ -14560,17 +14538,12 @@
(if
(i32.and
(i32.ge_u
- (local.tee $4
- (i32.load
- (local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
+ (local.tee $1
+ (i32.load offset=8
+ (local.get $0)
)
)
- (local.tee $3
+ (local.tee $2
(i32.load
(i32.const 192)
)
@@ -14578,28 +14551,37 @@
)
(i32.ge_u
(local.get $0)
- (local.get $3)
+ (local.get $2)
)
)
(block
(i32.store offset=12
- (local.get $4)
- (local.get $2)
- )
- (i32.store
(local.get $1)
- (local.get $2)
+ (local.get $3)
)
(i32.store offset=8
- (local.get $2)
- (local.get $4)
+ (local.get $0)
+ (local.get $3)
)
- (i32.store offset=12
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (local.get $1)
+ )
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 12)
+ )
(local.get $0)
)
- (i32.store offset=24
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 24)
+ )
(i32.const 0)
)
)
@@ -14616,20 +14598,29 @@
)
)
(i32.store
- (local.get $4)
- (local.get $2)
+ (local.get $5)
+ (local.get $3)
)
- (i32.store offset=24
- (local.get $2)
- (local.get $4)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 24)
+ )
+ (local.get $5)
)
- (i32.store offset=12
- (local.get $2)
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 12)
+ )
+ (local.get $3)
)
- (i32.store offset=8
- (local.get $2)
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (local.get $3)
)
)
)
@@ -14654,7 +14645,7 @@
(loop $while-in17
(local.set $0
(i32.add
- (local.tee $3
+ (local.tee $2
(i32.load
(local.get $0)
)
@@ -14663,7 +14654,7 @@
)
)
(br_if $while-in17
- (local.get $3)
+ (local.get $2)
)
)
(i32.store
diff --git a/test/emcc_hello_world.fromasm.clamp b/test/emcc_hello_world.fromasm.clamp
index 9a4aad57b..68a172d25 100644
--- a/test/emcc_hello_world.fromasm.clamp
+++ b/test/emcc_hello_world.fromasm.clamp
@@ -262,8 +262,11 @@
(loop $while-in
(if
(i32.ne
- (i32.load8_u offset=687
- (local.get $1)
+ (i32.load8_u
+ (i32.add
+ (local.get $1)
+ (i32.const 687)
+ )
)
(local.get $0)
)
@@ -497,11 +500,9 @@
)
(i32.store offset=12
(local.get $3)
- (local.tee $0
- (i32.add
- (local.get $3)
- (i32.const 20)
- )
+ (i32.add
+ (local.get $3)
+ (i32.const 20)
)
)
(i32.store offset=16
@@ -520,14 +521,14 @@
(i32.const 0)
)
(block (result i32)
- (i32.store
- (local.get $0)
+ (i32.store offset=20
+ (local.get $4)
(i32.const -1)
)
(i32.const -1)
)
- (i32.load
- (local.get $0)
+ (i32.load offset=20
+ (local.get $4)
)
)
)
@@ -664,11 +665,7 @@
(local $8 i32)
(local $9 i32)
(local $10 i32)
- (local $11 i32)
- (local $12 i32)
- (local $13 i32)
- (local $14 i32)
- (local.set $10
+ (local.set $8
(global.get $STACKTOP)
)
(global.set $STACKTOP
@@ -684,43 +681,33 @@
)
(call $abort)
)
- (local.set $8
+ (local.set $9
(i32.add
- (local.get $10)
+ (local.get $8)
(i32.const 16)
)
)
- (i32.store
- (local.tee $4
- (i32.add
- (local.tee $9
- (local.get $10)
- )
- (i32.const 32)
- )
+ (i32.store offset=32
+ (local.tee $6
+ (local.get $8)
)
(local.tee $3
- (i32.load
- (local.tee $6
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
+ (i32.load offset=28
+ (local.get $0)
)
)
)
(i32.store offset=4
- (local.get $4)
+ (local.tee $4
+ (i32.add
+ (local.get $6)
+ (i32.const 32)
+ )
+ )
(local.tee $3
(i32.sub
- (i32.load
- (local.tee $11
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
(local.get $3)
)
@@ -734,25 +721,13 @@
(local.get $4)
(local.get $2)
)
- (local.set $13
- (i32.add
- (local.get $0)
- (i32.const 60)
- )
- )
- (local.set $14
- (i32.add
- (local.get $0)
- (i32.const 44)
- )
- )
(local.set $1
(local.get $4)
)
(local.set $4
(i32.const 2)
)
- (local.set $12
+ (local.set $10
(i32.add
(local.get $2)
(local.get $3)
@@ -772,24 +747,24 @@
(local.get $0)
)
(i32.store
- (local.get $9)
- (i32.load
- (local.get $13)
+ (local.get $6)
+ (i32.load offset=60
+ (local.get $0)
)
)
(i32.store offset=4
- (local.get $9)
+ (local.get $6)
(local.get $1)
)
(i32.store offset=8
- (local.get $9)
+ (local.get $6)
(local.get $4)
)
(local.set $3
(call $___syscall_ret
(call $___syscall146
(i32.const 146)
- (local.get $9)
+ (local.get $6)
)
)
)
@@ -798,25 +773,25 @@
)
)
(block
- (i32.store
+ (i32.store offset=16
(local.get $8)
- (i32.load
- (local.get $13)
+ (i32.load offset=60
+ (local.get $0)
)
)
(i32.store offset=4
- (local.get $8)
+ (local.get $9)
(local.get $1)
)
(i32.store offset=8
- (local.get $8)
+ (local.get $9)
(local.get $4)
)
(local.set $3
(call $___syscall_ret
(call $___syscall146
(i32.const 146)
- (local.get $8)
+ (local.get $9)
)
)
)
@@ -825,7 +800,7 @@
(br_if $__rjti$0
(i32.eq
(local.get $3)
- (local.get $12)
+ (local.get $10)
)
)
(br_if $__rjti$1
@@ -839,27 +814,33 @@
(i32.gt_u
(local.get $3)
(local.tee $5
- (i32.load offset=4
- (local.get $1)
+ (i32.load
+ (i32.add
+ (local.get $1)
+ (i32.const 4)
+ )
)
)
)
(block (result i32)
- (i32.store
- (local.get $6)
+ (i32.store offset=28
+ (local.get $0)
(local.tee $7
- (i32.load
- (local.get $14)
+ (i32.load offset=44
+ (local.get $0)
)
)
)
- (i32.store
- (local.get $11)
+ (i32.store offset=20
+ (local.get $0)
(local.get $7)
)
(local.set $7
- (i32.load offset=12
- (local.get $1)
+ (i32.load
+ (i32.add
+ (local.get $1)
+ (i32.const 12)
+ )
)
)
(local.set $1
@@ -886,11 +867,11 @@
(i32.const 2)
)
(block
- (i32.store
- (local.get $6)
+ (i32.store offset=28
+ (local.get $0)
(i32.add
- (i32.load
- (local.get $6)
+ (i32.load offset=28
+ (local.get $0)
)
(local.get $3)
)
@@ -919,16 +900,19 @@
(local.get $5)
)
)
- (i32.store offset=4
- (local.get $1)
+ (i32.store
+ (i32.add
+ (local.get $1)
+ (i32.const 4)
+ )
(i32.sub
(local.get $7)
(local.get $5)
)
)
- (local.set $12
+ (local.set $10
(i32.sub
- (local.get $12)
+ (local.get $10)
(local.get $3)
)
)
@@ -939,8 +923,8 @@
(local.get $0)
(i32.add
(local.tee $1
- (i32.load
- (local.get $14)
+ (i32.load offset=44
+ (local.get $0)
)
)
(i32.load offset=48
@@ -948,12 +932,12 @@
)
)
)
- (i32.store
- (local.get $6)
+ (i32.store offset=28
+ (local.get $0)
(local.get $1)
)
- (i32.store
- (local.get $11)
+ (i32.store offset=20
+ (local.get $0)
(local.get $1)
)
(br $__rjto$1)
@@ -962,12 +946,12 @@
(local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $6)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $11)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
(i32.store
@@ -996,7 +980,7 @@
)
)
(global.set $STACKTOP
- (local.get $10)
+ (local.get $8)
)
(local.get $2)
)
@@ -1008,11 +992,7 @@
(local $6 i32)
(local $7 i32)
(local $8 i32)
- (local $9 i32)
- (local $10 i32)
- (local $11 i32)
- (local $12 i32)
- (local.set $6
+ (local.set $2
(global.get $STACKTOP)
)
(global.set $STACKTOP
@@ -1028,26 +1008,27 @@
)
(call $abort)
)
- (local.set $3
+ (local.set $6
(i32.add
- (local.get $6)
+ (local.get $2)
(i32.const 120)
)
)
- (local.set $5
+ (local.set $7
+ (local.get $2)
+ )
+ (local.set $4
(i32.add
- (local.tee $4
- (local.get $6)
- )
+ (local.get $2)
(i32.const 136)
)
)
- (local.set $8
+ (local.set $5
(i32.add
- (local.tee $2
- (local.tee $7
+ (local.tee $3
+ (local.tee $8
(i32.add
- (local.get $4)
+ (local.get $2)
(i32.const 80)
)
)
@@ -1057,23 +1038,23 @@
)
(loop $do-in
(i32.store
- (local.get $2)
+ (local.get $3)
(i32.const 0)
)
(br_if $do-in
(i32.lt_s
- (local.tee $2
+ (local.tee $3
(i32.add
- (local.get $2)
+ (local.get $3)
(i32.const 4)
)
)
- (local.get $8)
+ (local.get $5)
)
)
)
- (i32.store
- (local.get $3)
+ (i32.store offset=120
+ (local.get $2)
(i32.load
(local.get $1)
)
@@ -1083,9 +1064,9 @@
(i32.lt_s
(call $_printf_core
(i32.const 0)
- (local.get $3)
- (local.get $4)
+ (local.get $6)
(local.get $7)
+ (local.get $8)
)
(i32.const 0)
)
@@ -1096,7 +1077,7 @@
(local.get $0)
)
)
- (local.set $9
+ (local.set $3
(i32.load
(local.get $0)
)
@@ -1111,87 +1092,62 @@
(i32.store
(local.get $0)
(i32.and
- (local.get $9)
+ (local.get $3)
(i32.const -33)
)
)
)
(if
- (i32.load
- (local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 48)
- )
- )
+ (i32.load offset=48
+ (local.get $0)
)
(drop
(call $_printf_core
(local.get $0)
- (local.get $3)
- (local.get $4)
+ (local.get $6)
(local.get $7)
+ (local.get $8)
)
)
(block
- (local.set $11
- (i32.load
- (local.tee $10
- (i32.add
- (local.get $0)
- (i32.const 44)
- )
- )
+ (local.set $5
+ (i32.load offset=44
+ (local.get $0)
)
)
- (i32.store
- (local.get $10)
- (local.get $5)
+ (i32.store offset=44
+ (local.get $0)
+ (local.get $4)
)
- (i32.store
- (local.tee $2
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
- (local.get $5)
+ (i32.store offset=28
+ (local.get $0)
+ (local.get $4)
)
- (i32.store
- (local.tee $12
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
- (local.get $5)
+ (i32.store offset=20
+ (local.get $0)
+ (local.get $4)
)
- (i32.store
- (local.get $1)
+ (i32.store offset=48
+ (local.get $0)
(i32.const 80)
)
- (i32.store
- (local.tee $8
- (i32.add
- (local.get $0)
- (i32.const 16)
- )
- )
+ (i32.store offset=16
+ (local.get $0)
(i32.add
- (local.get $5)
+ (local.get $4)
(i32.const 80)
)
)
(drop
(call $_printf_core
(local.get $0)
- (local.get $3)
- (local.get $4)
+ (local.get $6)
(local.get $7)
+ (local.get $8)
)
)
(if
- (local.get $11)
+ (local.get $5)
(block
(drop
(call_indirect (type $FUNCSIG$iiii)
@@ -1210,28 +1166,28 @@
)
)
(drop
- (i32.load
- (local.get $12)
+ (i32.load offset=20
+ (local.get $0)
)
)
- (i32.store
- (local.get $10)
- (local.get $11)
+ (i32.store offset=44
+ (local.get $0)
+ (local.get $5)
)
- (i32.store
- (local.get $1)
+ (i32.store offset=48
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $8)
+ (i32.store offset=16
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $2)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $12)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
)
@@ -1245,7 +1201,7 @@
(local.get $0)
)
(i32.and
- (local.get $9)
+ (local.get $3)
(i32.const 32)
)
)
@@ -1255,25 +1211,19 @@
)
)
(global.set $STACKTOP
- (local.get $6)
+ (local.get $2)
)
)
(func $___fwritex (; 36 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
- (local $6 i32)
(block $label$break$L5
(block $__rjti$0
(br_if $__rjti$0
(local.tee $3
- (i32.load
- (local.tee $4
- (i32.add
- (local.get $2)
- (i32.const 16)
- )
- )
+ (i32.load offset=16
+ (local.get $2)
)
)
)
@@ -1285,8 +1235,8 @@
)
(block
(local.set $3
- (i32.load
- (local.get $4)
+ (i32.load offset=16
+ (local.get $2)
)
)
(br $__rjti$0)
@@ -1299,13 +1249,8 @@
(i32.sub
(local.get $3)
(local.tee $4
- (i32.load
- (local.tee $5
- (i32.add
- (local.get $2)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $2)
)
)
)
@@ -1357,7 +1302,7 @@
(i32.load8_s
(i32.add
(local.get $0)
- (local.tee $6
+ (local.tee $5
(i32.add
(local.get $3)
(i32.const -1)
@@ -1369,7 +1314,7 @@
)
(block
(local.set $3
- (local.get $6)
+ (local.get $5)
)
(br $while-in)
)
@@ -1395,8 +1340,8 @@
)
)
(local.set $4
- (i32.load
- (local.get $5)
+ (i32.load offset=20
+ (local.get $2)
)
)
(local.set $1
@@ -1423,11 +1368,11 @@
(local.get $1)
)
)
- (i32.store
- (local.get $5)
+ (i32.store offset=20
+ (local.get $2)
(i32.add
- (i32.load
- (local.get $5)
+ (i32.load offset=20
+ (local.get $2)
)
(local.get $1)
)
@@ -1436,21 +1381,14 @@
)
(func $___towrite (; 37 ;) (; has Stack IR ;) (param $0 i32) (result i32)
(local $1 i32)
- (local $2 i32)
- (local.set $1
- (i32.load8_s
- (local.tee $2
- (i32.add
+ (i32.store8 offset=74
+ (local.get $0)
+ (i32.or
+ (local.tee $1
+ (i32.load8_s offset=74
(local.get $0)
- (i32.const 74)
)
)
- )
- )
- (i32.store8
- (local.get $2)
- (i32.or
- (local.get $1)
(i32.add
(local.get $1)
(i32.const 255)
@@ -1908,29 +1846,15 @@
(local $1 i32)
(local $2 i32)
(local $3 i32)
- (local $4 i32)
- (local $5 i32)
- (local $6 i32)
- (local $7 i32)
(block $__rjto$0 (result i32)
(block $__rjti$0
(br_if $__rjti$0
(i32.le_u
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
+ (i32.load offset=28
+ (local.get $0)
)
)
)
@@ -1954,8 +1878,8 @@
)
)
(br_if $__rjti$0
- (i32.load
- (local.get $2)
+ (i32.load offset=20
+ (local.get $0)
)
)
(br $__rjto$0
@@ -1964,29 +1888,19 @@
)
(if
(i32.lt_u
- (local.tee $4
- (i32.load
- (local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 4)
- )
- )
+ (local.tee $1
+ (i32.load offset=4
+ (local.get $0)
)
)
- (local.tee $6
- (i32.load
- (local.tee $5
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
+ (local.tee $2
+ (i32.load offset=8
+ (local.get $0)
)
)
)
(block
- (local.set $7
+ (local.set $3
(i32.load offset=40
(local.get $0)
)
@@ -1995,13 +1909,13 @@
(call_indirect (type $FUNCSIG$iiii)
(local.get $0)
(i32.sub
- (local.get $4)
- (local.get $6)
+ (local.get $1)
+ (local.get $2)
)
(i32.const 1)
(i32.add
(i32.and
- (local.get $7)
+ (local.get $3)
(i32.const 7)
)
(i32.const 2)
@@ -2014,20 +1928,20 @@
(local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $3)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $2)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $5)
+ (i32.store offset=8
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $1)
+ (i32.store offset=4
+ (local.get $0)
(i32.const 0)
)
(i32.const 0)
@@ -2183,8 +2097,7 @@
(local $48 i32)
(local $49 i32)
(local $50 i32)
- (local $51 i32)
- (local.set $34
+ (local.set $20
(global.get $STACKTOP)
)
(global.set $STACKTOP
@@ -2200,16 +2113,16 @@
)
(call $abort)
)
- (local.set $20
+ (local.set $39
(i32.add
- (local.get $34)
+ (local.get $20)
(i32.const 16)
)
)
- (local.set $35
+ (local.set $33
(i32.add
(local.tee $13
- (local.get $34)
+ (local.get $20)
)
(i32.const 528)
)
@@ -2220,7 +2133,7 @@
(i32.const 0)
)
)
- (local.set $38
+ (local.set $36
(local.tee $25
(i32.add
(local.tee $4
@@ -2233,21 +2146,16 @@
)
)
)
- (local.set $39
+ (local.set $40
(i32.add
(local.get $4)
(i32.const 39)
)
)
- (local.set $43
+ (local.set $41
(i32.add
- (local.tee $40
- (i32.add
- (local.get $13)
- (i32.const 8)
- )
- )
- (i32.const 4)
+ (local.get $13)
+ (i32.const 8)
)
)
(local.set $32
@@ -2261,18 +2169,18 @@
(i32.const 12)
)
)
- (local.set $41
+ (local.set $42
(i32.add
(local.get $4)
(i32.const 11)
)
)
- (local.set $44
+ (local.set $43
(i32.sub
(local.tee $27
(local.get $32)
)
- (local.tee $36
+ (local.tee $34
(local.tee $23
(i32.add
(local.get $13)
@@ -2282,21 +2190,21 @@
)
)
)
- (local.set $45
+ (local.set $44
(i32.sub
(i32.const -2)
- (local.get $36)
+ (local.get $34)
)
)
- (local.set $46
+ (local.set $45
(i32.add
(local.get $27)
(i32.const 2)
)
)
- (local.set $48
+ (local.set $47
(i32.add
- (local.tee $47
+ (local.tee $46
(i32.add
(local.get $13)
(i32.const 24)
@@ -2305,7 +2213,7 @@
(i32.const 288)
)
)
- (local.set $42
+ (local.set $37
(local.tee $29
(i32.add
(local.get $23)
@@ -2313,7 +2221,7 @@
)
)
)
- (local.set $33
+ (local.set $38
(i32.add
(local.get $23)
(i32.const 8)
@@ -3621,7 +3529,7 @@
(local.tee $10
(i32.add
(i32.sub
- (local.get $38)
+ (local.get $36)
(local.tee $6
(local.get $7)
)
@@ -3749,14 +3657,14 @@
(local.get $13)
)
)
- (i32.store8
- (local.get $39)
+ (i32.store8 offset=575
+ (local.get $13)
(i32.load
(local.get $13)
)
)
(local.set $4
- (local.get $39)
+ (local.get $40)
)
(local.set $10
(local.get $7)
@@ -3801,19 +3709,19 @@
(local.get $13)
)
)
- (i32.store
- (local.get $40)
+ (i32.store offset=8
+ (local.get $20)
(i32.load
(local.get $13)
)
)
- (i32.store
- (local.get $43)
+ (i32.store offset=12
+ (local.get $13)
(i32.const 0)
)
(i32.store
(local.get $13)
- (local.get $40)
+ (local.get $41)
)
(local.set $7
(i32.const -1)
@@ -3847,7 +3755,7 @@
(local.get $13)
)
)
- (i32.store
+ (i32.store offset=16
(local.get $20)
(i32.const 0)
)
@@ -3936,7 +3844,7 @@
(f64.mul
(call $_frexp
(local.get $15)
- (local.get $20)
+ (local.get $39)
)
(f64.const 2)
)
@@ -3944,10 +3852,10 @@
(f64.const 0)
)
)
- (i32.store
+ (i32.store offset=16
(local.get $20)
(i32.add
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
(i32.const -1)
@@ -4061,7 +3969,7 @@
(i32.sub
(i32.const 0)
(local.tee $6
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
)
@@ -4089,12 +3997,12 @@
(local.get $32)
)
(block
- (i32.store8
- (local.get $41)
+ (i32.store8 offset=587
+ (local.get $13)
(i32.const 48)
)
(local.set $4
- (local.get $41)
+ (local.get $42)
)
)
)
@@ -4181,7 +4089,7 @@
(i32.const 1)
)
)
- (local.get $36)
+ (local.get $34)
)
(i32.const 1)
)
@@ -4230,14 +4138,14 @@
(i32.sub
(i32.add
(local.get $5)
- (local.get $46)
+ (local.get $45)
)
(local.get $7)
)
(i32.add
(local.get $4)
(i32.sub
- (local.get $44)
+ (local.get $43)
(local.get $7)
)
)
@@ -4249,7 +4157,7 @@
(i32.lt_s
(i32.add
(local.get $4)
- (local.get $45)
+ (local.get $44)
)
(local.get $5)
)
@@ -4288,7 +4196,7 @@
(local.set $4
(i32.sub
(local.get $4)
- (local.get $36)
+ (local.get $34)
)
)
(if
@@ -4365,11 +4273,11 @@
(if (result f64)
(local.get $4)
(block (result f64)
- (i32.store
+ (i32.store offset=16
(local.get $20)
(local.tee $4
(i32.add
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
(i32.const -28)
@@ -4383,7 +4291,7 @@
)
(block (result f64)
(local.set $4
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
)
@@ -4394,8 +4302,8 @@
(local.set $6
(local.tee $7
(select
+ (local.get $46)
(local.get $47)
- (local.get $48)
(i32.lt_s
(local.get $4)
(i32.const 0)
@@ -4438,7 +4346,7 @@
(if
(i32.gt_s
(local.tee $8
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
)
@@ -4558,11 +4466,11 @@
)
)
)
- (i32.store
+ (i32.store offset=16
(local.get $20)
(local.tee $8
(i32.sub
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
(local.get $12)
@@ -4653,7 +4561,7 @@
(i32.const -1)
)
)
- (local.set $37
+ (local.set $35
(i32.shr_u
(i32.const 1000000000)
(local.get $12)
@@ -4686,7 +4594,7 @@
(local.get $8)
(local.get $11)
)
- (local.get $37)
+ (local.get $35)
)
)
(br_if $while-in74
@@ -4770,11 +4678,11 @@
)
)
)
- (i32.store
+ (i32.store offset=16
(local.get $20)
(local.tee $8
(i32.add
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
(local.get $12)
@@ -4892,7 +4800,7 @@
(i32.const 103)
)
)
- (local.tee $37
+ (local.tee $35
(i32.ne
(local.get $17)
(i32.const 0)
@@ -4996,7 +4904,7 @@
(if
(i32.eqz
(i32.and
- (local.tee $49
+ (local.tee $48
(i32.eq
(i32.add
(local.get $5)
@@ -5011,7 +4919,7 @@
)
)
(block $do-once81
- (local.set $50
+ (local.set $49
(call $i32u-div
(local.get $24)
(local.get $11)
@@ -5021,7 +4929,7 @@
(if (result f64)
(i32.lt_u
(local.get $12)
- (local.tee $51
+ (local.tee $50
(call $i32s-div
(local.get $11)
(i32.const 2)
@@ -5033,10 +4941,10 @@
(f64.const 1)
(f64.const 1.5)
(i32.and
- (local.get $49)
+ (local.get $48)
(i32.eq
(local.get $12)
- (local.get $51)
+ (local.get $50)
)
)
)
@@ -5047,7 +4955,7 @@
(f64.const 9007199254740994)
(f64.const 9007199254740992)
(i32.and
- (local.get $50)
+ (local.get $49)
(i32.const 1)
)
)
@@ -5282,7 +5190,7 @@
(i32.add
(local.get $17)
(i32.xor
- (local.get $37)
+ (local.get $35)
(i32.const 1)
)
)
@@ -5707,12 +5615,12 @@
(local.get $29)
)
)
- (i32.store8
- (local.get $33)
+ (i32.store8 offset=596
+ (local.get $13)
(i32.const 48)
)
(local.set $6
- (local.get $33)
+ (local.get $38)
)
)
(block
@@ -5754,7 +5662,7 @@
(call $___fwritex
(local.get $6)
(i32.sub
- (local.get $42)
+ (local.get $37)
(local.get $6)
)
(local.get $0)
@@ -5951,12 +5859,12 @@
(local.get $29)
)
(block
- (i32.store8
- (local.get $33)
+ (i32.store8 offset=596
+ (local.get $13)
(i32.const 48)
)
(local.set $4
- (local.get $33)
+ (local.get $38)
)
)
)
@@ -6040,7 +5948,7 @@
)
(local.set $7
(i32.sub
- (local.get $42)
+ (local.get $37)
(local.get $4)
)
)
@@ -6453,7 +6361,7 @@
(i32.lt_s
(local.tee $6
(call $_wctomb
- (local.get $35)
+ (local.get $33)
(local.get $8)
)
)
@@ -6538,7 +6446,7 @@
(i32.add
(local.tee $7
(call $_wctomb
- (local.get $35)
+ (local.get $33)
(local.get $7)
)
)
@@ -6559,7 +6467,7 @@
)
)
(call $___fwritex
- (local.get $35)
+ (local.get $33)
(local.get $7)
(local.get $0)
)
@@ -6650,7 +6558,7 @@
(i32.const 1)
)
(i32.sub
- (local.get $38)
+ (local.get $36)
(local.tee $4
(local.get $6)
)
@@ -6865,7 +6773,7 @@
)
)
(global.set $STACKTOP
- (local.get $34)
+ (local.get $20)
)
(local.get $16)
)
@@ -6950,8 +6858,11 @@
(local.get $0)
(local.get $1)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(i32.shr_s
(i32.shl
(i32.lt_s
@@ -6991,8 +6902,11 @@
(local.get $0)
(local.get $3)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(i32.const 0)
)
(br $label$break$L1)
@@ -7015,8 +6929,11 @@
)
)
(local.set $3
- (i32.load offset=4
- (local.get $3)
+ (i32.load
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
)
)
(i32.store
@@ -7030,8 +6947,11 @@
(local.get $0)
(local.get $5)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(local.get $3)
)
(br $label$break$L1)
@@ -7073,8 +6993,11 @@
)
)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(i32.shr_s
(i32.shl
(i32.lt_s
@@ -7117,8 +7040,11 @@
(i32.const 65535)
)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(i32.const 0)
)
(br $label$break$L1)
@@ -7160,8 +7086,11 @@
)
)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(i32.shr_s
(i32.shl
(i32.lt_s
@@ -7204,8 +7133,11 @@
(i32.const 255)
)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(i32.const 0)
)
(br $label$break$L1)
@@ -7546,569 +7478,575 @@
(local $16 i32)
(local $17 i32)
(local $18 i32)
- (local.set $0
- (if (result i32)
- (i32.lt_u
- (local.get $0)
- (i32.const 245)
- )
- (block (result i32)
- (if
- (i32.and
- (local.tee $10
- (i32.shr_u
- (local.tee $6
- (i32.load
- (i32.const 176)
+ (block $folding-inner1
+ (local.set $0
+ (if (result i32)
+ (i32.lt_u
+ (local.get $0)
+ (i32.const 245)
+ )
+ (block (result i32)
+ (if
+ (i32.and
+ (local.tee $12
+ (i32.shr_u
+ (local.tee $6
+ (i32.load
+ (i32.const 176)
+ )
)
- )
- (local.tee $13
- (i32.shr_u
- (local.tee $2
- (select
- (i32.const 16)
- (i32.and
- (i32.add
+ (local.tee $13
+ (i32.shr_u
+ (local.tee $4
+ (select
+ (i32.const 16)
+ (i32.and
+ (i32.add
+ (local.get $0)
+ (i32.const 11)
+ )
+ (i32.const -8)
+ )
+ (i32.lt_u
(local.get $0)
(i32.const 11)
)
- (i32.const -8)
- )
- (i32.lt_u
- (local.get $0)
- (i32.const 11)
)
)
+ (i32.const 3)
)
- (i32.const 3)
)
)
)
+ (i32.const 3)
)
- (i32.const 3)
- )
- (block
- (if
- (i32.eq
- (local.tee $7
- (i32.load
- (local.tee $1
- (i32.add
- (local.tee $11
- (i32.load
- (local.tee $3
- (i32.add
- (local.tee $2
+ (block
+ (if
+ (i32.eq
+ (local.tee $2
+ (i32.load offset=8
+ (local.tee $3
+ (i32.load offset=8
+ (local.tee $1
+ (i32.add
+ (i32.shl
+ (local.tee $0
(i32.add
- (i32.shl
- (local.tee $4
- (i32.add
- (i32.xor
- (i32.and
- (local.get $10)
- (i32.const 1)
- )
- (i32.const 1)
- )
- (local.get $13)
- )
+ (i32.xor
+ (i32.and
+ (local.get $12)
+ (i32.const 1)
)
- (i32.const 3)
+ (i32.const 1)
)
- (i32.const 216)
+ (local.get $13)
)
)
- (i32.const 8)
+ (i32.const 3)
)
+ (i32.const 216)
)
)
)
- (i32.const 8)
)
)
)
+ (local.get $1)
)
- (local.get $2)
- )
- (i32.store
- (i32.const 176)
- (i32.and
- (local.get $6)
- (i32.xor
- (i32.shl
- (i32.const 1)
- (local.get $4)
- )
- (i32.const -1)
- )
- )
- )
- (block
- (if
- (i32.lt_u
- (local.get $7)
- (i32.load
- (i32.const 192)
+ (i32.store
+ (i32.const 176)
+ (i32.and
+ (local.get $6)
+ (i32.xor
+ (i32.shl
+ (i32.const 1)
+ (local.get $0)
+ )
+ (i32.const -1)
)
)
- (call $_abort)
)
- (if
- (i32.eq
- (local.get $11)
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $7)
- (i32.const 12)
- )
+ (block
+ (if
+ (i32.lt_u
+ (local.get $2)
+ (i32.load
+ (i32.const 192)
)
)
+ (call $_abort)
)
- (block
- (i32.store
- (local.get $0)
- (local.get $2)
- )
- (i32.store
+ (if
+ (i32.eq
(local.get $3)
- (local.get $7)
+ (i32.load offset=12
+ (local.get $2)
+ )
)
+ (block
+ (i32.store offset=12
+ (local.get $2)
+ (local.get $1)
+ )
+ (i32.store offset=8
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+ (call $_abort)
)
- (call $_abort)
)
)
- )
- (i32.store offset=4
- (local.get $11)
- (i32.or
- (local.tee $0
- (i32.shl
- (local.get $4)
- (i32.const 3)
+ (i32.store offset=4
+ (local.get $3)
+ (i32.or
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (i32.const 3)
+ )
)
+ (i32.const 3)
)
- (i32.const 3)
)
- )
- (i32.store
- (local.tee $0
- (i32.add
+ (i32.store offset=4
+ (local.tee $0
(i32.add
(local.get $0)
- (local.get $11)
+ (local.get $3)
)
- (i32.const 4)
)
- )
- (i32.or
- (i32.load
- (local.get $0)
+ (i32.or
+ (i32.load offset=4
+ (local.get $0)
+ )
+ (i32.const 1)
)
- (i32.const 1)
)
- )
- (return
- (local.get $1)
+ (br $folding-inner1)
)
)
- )
- (if (result i32)
- (i32.gt_u
- (local.get $2)
- (local.tee $0
- (i32.load
- (i32.const 184)
+ (if (result i32)
+ (i32.gt_u
+ (local.get $4)
+ (local.tee $0
+ (i32.load
+ (i32.const 184)
+ )
)
)
- )
- (block (result i32)
- (if
- (local.get $10)
- (block
- (if
- (i32.eq
- (local.tee $8
- (i32.load
- (local.tee $4
- (i32.add
- (local.tee $10
- (i32.load
- (local.tee $3
- (i32.add
- (local.tee $7
+ (block (result i32)
+ (if
+ (local.get $12)
+ (block
+ (if
+ (i32.eq
+ (local.tee $9
+ (i32.load offset=8
+ (local.tee $11
+ (i32.load offset=8
+ (local.tee $7
+ (i32.add
+ (i32.shl
+ (local.tee $2
(i32.add
- (i32.shl
- (local.tee $11
- (i32.add
+ (i32.or
+ (i32.or
+ (i32.or
(i32.or
- (i32.or
- (i32.or
- (i32.or
- (local.tee $3
- (i32.and
- (i32.shr_u
- (local.tee $4
- (i32.add
- (i32.and
- (local.tee $3
- (i32.and
- (i32.or
- (local.tee $3
- (i32.shl
- (i32.const 2)
- (local.get $13)
- )
- )
- (i32.sub
- (i32.const 0)
- (local.get $3)
- )
- )
- (i32.shl
- (local.get $10)
- (local.get $13)
- )
+ (local.tee $2
+ (i32.and
+ (i32.shr_u
+ (local.tee $7
+ (i32.add
+ (i32.and
+ (local.tee $2
+ (i32.and
+ (i32.or
+ (local.tee $2
+ (i32.shl
+ (i32.const 2)
+ (local.get $13)
)
)
(i32.sub
(i32.const 0)
- (local.get $3)
+ (local.get $2)
)
)
- (i32.const -1)
+ (i32.shl
+ (local.get $12)
+ (local.get $13)
+ )
)
)
- (i32.const 12)
- )
- (i32.const 16)
- )
- )
- (local.tee $3
- (i32.and
- (i32.shr_u
- (local.tee $4
- (i32.shr_u
- (local.get $4)
- (local.get $3)
- )
+ (i32.sub
+ (i32.const 0)
+ (local.get $2)
)
- (i32.const 5)
)
- (i32.const 8)
+ (i32.const -1)
)
)
+ (i32.const 12)
)
- (local.tee $3
- (i32.and
+ (i32.const 16)
+ )
+ )
+ (local.tee $2
+ (i32.and
+ (i32.shr_u
+ (local.tee $7
(i32.shr_u
- (local.tee $4
- (i32.shr_u
- (local.get $4)
- (local.get $3)
- )
- )
- (i32.const 2)
+ (local.get $7)
+ (local.get $2)
)
- (i32.const 4)
)
+ (i32.const 5)
)
+ (i32.const 8)
)
- (local.tee $3
- (i32.and
+ )
+ )
+ (local.tee $2
+ (i32.and
+ (i32.shr_u
+ (local.tee $7
(i32.shr_u
- (local.tee $4
- (i32.shr_u
- (local.get $4)
- (local.get $3)
- )
- )
- (i32.const 1)
+ (local.get $7)
+ (local.get $2)
)
- (i32.const 2)
)
+ (i32.const 2)
)
+ (i32.const 4)
)
- (local.tee $3
- (i32.and
+ )
+ )
+ (local.tee $2
+ (i32.and
+ (i32.shr_u
+ (local.tee $7
(i32.shr_u
- (local.tee $4
- (i32.shr_u
- (local.get $4)
- (local.get $3)
- )
- )
- (i32.const 1)
+ (local.get $7)
+ (local.get $2)
)
- (i32.const 1)
)
+ (i32.const 1)
)
+ (i32.const 2)
)
+ )
+ )
+ (local.tee $2
+ (i32.and
(i32.shr_u
- (local.get $4)
- (local.get $3)
+ (local.tee $7
+ (i32.shr_u
+ (local.get $7)
+ (local.get $2)
+ )
+ )
+ (i32.const 1)
)
+ (i32.const 1)
)
)
- (i32.const 3)
)
- (i32.const 216)
+ (i32.shr_u
+ (local.get $7)
+ (local.get $2)
+ )
)
)
- (i32.const 8)
+ (i32.const 3)
)
+ (i32.const 216)
)
)
)
- (i32.const 8)
)
)
)
+ (local.get $7)
)
- (local.get $7)
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.and
- (local.get $6)
- (i32.xor
- (i32.shl
- (i32.const 1)
- (local.get $11)
+ (block
+ (i32.store
+ (i32.const 176)
+ (i32.and
+ (local.get $6)
+ (i32.xor
+ (i32.shl
+ (i32.const 1)
+ (local.get $2)
+ )
+ (i32.const -1)
)
- (i32.const -1)
)
)
- )
- (local.set $9
- (local.get $0)
- )
- )
- (block
- (if
- (i32.lt_u
- (local.get $8)
- (i32.load
- (i32.const 192)
- )
+ (local.set $8
+ (local.get $0)
)
- (call $_abort)
)
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $8)
- (i32.const 12)
- )
- )
- )
- (local.get $10)
- )
- (block
- (i32.store
- (local.get $0)
- (local.get $7)
- )
- (i32.store
- (local.get $3)
- (local.get $8)
- )
- (local.set $9
+ (block
+ (if
+ (i32.lt_u
+ (local.get $9)
(i32.load
- (i32.const 184)
+ (i32.const 192)
)
)
+ (call $_abort)
)
- (call $_abort)
- )
- )
- )
- (i32.store offset=4
- (local.get $10)
- (i32.or
- (local.get $2)
- (i32.const 3)
- )
- )
- (i32.store offset=4
- (local.tee $7
- (i32.add
- (local.get $2)
- (local.get $10)
- )
- )
- (i32.or
- (local.tee $11
- (i32.sub
- (i32.shl
+ (if
+ (i32.eq
+ (i32.load offset=12
+ (local.get $9)
+ )
(local.get $11)
- (i32.const 3)
)
- (local.get $2)
+ (block
+ (i32.store offset=12
+ (local.get $9)
+ (local.get $7)
+ )
+ (i32.store offset=8
+ (local.get $7)
+ (local.get $9)
+ )
+ (local.set $8
+ (i32.load
+ (i32.const 184)
+ )
+ )
+ )
+ (call $_abort)
)
)
- (i32.const 1)
)
- )
- (i32.store
- (i32.add
- (local.get $7)
+ (i32.store offset=4
(local.get $11)
+ (i32.or
+ (local.get $4)
+ (i32.const 3)
+ )
)
- (local.get $11)
- )
- (if
- (local.get $9)
- (block
- (local.set $6
- (i32.load
- (i32.const 196)
+ (i32.store offset=4
+ (local.tee $7
+ (i32.add
+ (local.get $4)
+ (local.get $11)
)
)
- (local.set $2
- (i32.add
- (i32.shl
- (local.tee $0
- (i32.shr_u
- (local.get $9)
- (i32.const 3)
- )
+ (i32.or
+ (local.tee $9
+ (i32.sub
+ (i32.shl
+ (local.get $2)
+ (i32.const 3)
)
- (i32.const 3)
+ (local.get $4)
)
- (i32.const 216)
)
+ (i32.const 1)
)
- (if
- (i32.and
- (local.tee $3
- (i32.load
- (i32.const 176)
- )
+ )
+ (i32.store
+ (i32.add
+ (local.get $7)
+ (local.get $9)
+ )
+ (local.get $9)
+ )
+ (if
+ (local.get $8)
+ (block
+ (local.set $6
+ (i32.load
+ (i32.const 196)
)
- (local.tee $0
+ )
+ (local.set $4
+ (i32.add
(i32.shl
- (i32.const 1)
- (local.get $0)
+ (local.tee $0
+ (i32.shr_u
+ (local.get $8)
+ (i32.const 3)
+ )
+ )
+ (i32.const 3)
)
+ (i32.const 216)
)
)
(if
- (i32.lt_u
- (local.tee $0
+ (i32.and
+ (local.tee $2
(i32.load
- (local.tee $3
- (i32.add
- (local.get $2)
- (i32.const 8)
- )
- )
+ (i32.const 176)
)
)
- (i32.load
- (i32.const 192)
+ (local.tee $0
+ (i32.shl
+ (i32.const 1)
+ (local.get $0)
+ )
)
)
- (call $_abort)
(block
- (local.set $5
- (local.get $3)
+ (local.set $2
+ (i32.add
+ (local.get $4)
+ (i32.const 8)
+ )
)
- (local.set $1
- (local.get $0)
+ (if
+ (i32.lt_u
+ (local.tee $0
+ (i32.load offset=8
+ (local.get $4)
+ )
+ )
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ (call $_abort)
+ (block
+ (local.set $3
+ (local.get $2)
+ )
+ (local.set $1
+ (local.get $0)
+ )
+ )
)
)
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.or
- (local.get $0)
- (local.get $3)
+ (block
+ (i32.store
+ (i32.const 176)
+ (i32.or
+ (local.get $0)
+ (local.get $2)
+ )
)
- )
- (local.set $5
- (i32.add
- (local.get $2)
- (i32.const 8)
+ (local.set $3
+ (i32.add
+ (local.get $4)
+ (i32.const 8)
+ )
+ )
+ (local.set $1
+ (local.get $4)
)
)
- (local.set $1
- (local.get $2)
+ )
+ (i32.store
+ (local.get $3)
+ (local.get $6)
+ )
+ (i32.store
+ (i32.add
+ (local.get $1)
+ (i32.const 12)
)
+ (local.get $6)
+ )
+ (i32.store offset=8
+ (local.get $6)
+ (local.get $1)
+ )
+ (i32.store offset=12
+ (local.get $6)
+ (local.get $4)
)
)
- (i32.store
- (local.get $5)
- (local.get $6)
- )
- (i32.store offset=12
- (local.get $1)
- (local.get $6)
- )
- (i32.store offset=8
- (local.get $6)
- (local.get $1)
- )
- (i32.store offset=12
- (local.get $6)
- (local.get $2)
+ )
+ (i32.store
+ (i32.const 184)
+ (local.get $9)
+ )
+ (i32.store
+ (i32.const 196)
+ (local.get $7)
+ )
+ (return
+ (i32.add
+ (local.get $11)
+ (i32.const 8)
)
)
)
- (i32.store
- (i32.const 184)
- (local.get $11)
- )
- (i32.store
- (i32.const 196)
- (local.get $7)
- )
- (return
- (local.get $4)
- )
)
- )
- (if (result i32)
- (local.tee $0
- (i32.load
- (i32.const 180)
+ (if (result i32)
+ (local.tee $0
+ (i32.load
+ (i32.const 180)
+ )
)
- )
- (block
- (local.set $11
- (i32.sub
- (i32.and
- (i32.load offset=4
- (local.tee $0
- (i32.load offset=480
- (i32.shl
+ (block
+ (local.set $7
+ (i32.sub
+ (i32.and
+ (i32.load offset=4
+ (local.tee $0
+ (i32.load
(i32.add
- (i32.or
- (i32.or
+ (i32.shl
+ (i32.add
(i32.or
(i32.or
- (local.tee $0
- (i32.and
- (i32.shr_u
- (local.tee $1
- (i32.add
- (i32.and
- (local.get $0)
- (i32.sub
- (i32.const 0)
+ (i32.or
+ (i32.or
+ (local.tee $0
+ (i32.and
+ (i32.shr_u
+ (local.tee $1
+ (i32.add
+ (i32.and
+ (local.get $0)
+ (i32.sub
+ (i32.const 0)
+ (local.get $0)
+ )
+ )
+ (i32.const -1)
+ )
+ )
+ (i32.const 12)
+ )
+ (i32.const 16)
+ )
+ )
+ (local.tee $0
+ (i32.and
+ (i32.shr_u
+ (local.tee $1
+ (i32.shr_u
+ (local.get $1)
(local.get $0)
)
)
- (i32.const -1)
+ (i32.const 5)
)
+ (i32.const 8)
)
- (i32.const 12)
)
- (i32.const 16)
+ )
+ (local.tee $0
+ (i32.and
+ (i32.shr_u
+ (local.tee $1
+ (i32.shr_u
+ (local.get $1)
+ (local.get $0)
+ )
+ )
+ (i32.const 2)
+ )
+ (i32.const 4)
+ )
)
)
(local.tee $0
@@ -8120,9 +8058,9 @@
(local.get $0)
)
)
- (i32.const 5)
+ (i32.const 1)
)
- (i32.const 8)
+ (i32.const 2)
)
)
)
@@ -8135,881 +8073,876 @@
(local.get $0)
)
)
- (i32.const 2)
- )
- (i32.const 4)
- )
- )
- )
- (local.tee $0
- (i32.and
- (i32.shr_u
- (local.tee $1
- (i32.shr_u
- (local.get $1)
- (local.get $0)
- )
+ (i32.const 1)
)
(i32.const 1)
)
- (i32.const 2)
)
)
- )
- (local.tee $0
- (i32.and
- (i32.shr_u
- (local.tee $1
- (i32.shr_u
- (local.get $1)
- (local.get $0)
- )
- )
- (i32.const 1)
- )
- (i32.const 1)
+ (i32.shr_u
+ (local.get $1)
+ (local.get $0)
)
)
+ (i32.const 2)
)
- (i32.shr_u
- (local.get $1)
- (local.get $0)
- )
+ (i32.const 480)
)
- (i32.const 2)
)
)
)
+ (i32.const -8)
)
- (i32.const -8)
+ (local.get $4)
)
- (local.get $2)
)
- )
- (local.set $7
- (local.get $0)
- )
- (loop $while-in
- (block $while-out
- (if
- (local.tee $1
- (i32.load offset=16
- (local.get $0)
- )
- )
- (local.set $0
- (local.get $1)
- )
+ (local.set $3
+ (local.tee $1
+ (local.get $0)
+ )
+ )
+ (loop $while-in
+ (block $while-out
(if
(i32.eqz
(local.tee $0
- (i32.load offset=20
- (local.get $0)
+ (i32.load
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
)
)
)
- (block
- (local.set $6
- (local.get $11)
+ (if
+ (i32.eqz
+ (local.tee $0
+ (i32.load
+ (i32.add
+ (local.get $1)
+ (i32.const 20)
+ )
+ )
+ )
)
- (local.set $8
- (local.get $7)
+ (block
+ (local.set $9
+ (local.get $7)
+ )
+ (local.set $6
+ (local.get $3)
+ )
+ (br $while-out)
)
- (br $while-out)
)
)
- )
- (local.set $6
- (i32.lt_u
- (local.tee $1
- (i32.sub
- (i32.and
- (i32.load offset=4
- (local.get $0)
+ (local.set $9
+ (i32.lt_u
+ (local.tee $1
+ (i32.sub
+ (i32.and
+ (i32.load
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
+ )
+ (i32.const -8)
)
- (i32.const -8)
+ (local.get $4)
)
- (local.get $2)
)
+ (local.get $7)
)
- (local.get $11)
)
- )
- (local.set $11
- (select
- (local.get $1)
- (local.get $11)
- (local.get $6)
+ (local.set $7
+ (select
+ (local.get $1)
+ (local.get $7)
+ (local.get $9)
+ )
)
- )
- (local.set $7
- (select
- (local.get $0)
- (local.get $7)
- (local.get $6)
+ (local.set $3
+ (select
+ (local.tee $1
+ (local.get $0)
+ )
+ (local.get $3)
+ (local.get $9)
+ )
)
+ (br $while-in)
)
- (br $while-in)
)
- )
- (if
- (i32.lt_u
- (local.get $8)
- (local.tee $10
- (i32.load
- (i32.const 192)
+ (if
+ (i32.lt_u
+ (local.get $6)
+ (local.tee $11
+ (i32.load
+ (i32.const 192)
+ )
)
)
+ (call $_abort)
)
- (call $_abort)
- )
- (if
- (i32.ge_u
- (local.get $8)
- (local.tee $5
- (i32.add
- (local.get $2)
- (local.get $8)
+ (if
+ (i32.ge_u
+ (local.get $6)
+ (local.tee $12
+ (i32.add
+ (local.get $4)
+ (local.get $6)
+ )
)
)
+ (call $_abort)
)
- (call $_abort)
- )
- (local.set $9
- (i32.load offset=24
- (local.get $8)
+ (local.set $8
+ (i32.load offset=24
+ (local.get $6)
+ )
)
- )
- (if
- (i32.eq
- (local.tee $0
- (i32.load offset=12
- (local.get $8)
+ (if
+ (i32.eq
+ (local.tee $0
+ (i32.load offset=12
+ (local.get $6)
+ )
)
+ (local.get $6)
)
- (local.get $8)
- )
- (block $do-once4
- (if
- (i32.eqz
- (local.tee $1
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $8)
- (i32.const 20)
- )
- )
- )
+ (block $do-once4
+ (local.set $0
+ (i32.add
+ (local.get $6)
+ (i32.const 20)
)
)
- (br_if $do-once4
+ (if
(i32.eqz
(local.tee $1
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $8)
- (i32.const 16)
+ (i32.load offset=20
+ (local.get $6)
+ )
+ )
+ )
+ (block
+ (local.set $0
+ (i32.add
+ (local.get $6)
+ (i32.const 16)
+ )
+ )
+ (br_if $do-once4
+ (i32.eqz
+ (local.tee $1
+ (i32.load offset=16
+ (local.get $6)
)
)
)
)
)
)
- )
- (loop $while-in7
- (if
- (local.tee $7
- (i32.load
- (local.tee $11
- (i32.add
- (local.get $1)
- (i32.const 20)
+ (loop $while-in7
+ (if
+ (local.tee $3
+ (i32.load
+ (local.tee $7
+ (i32.add
+ (local.get $1)
+ (i32.const 20)
+ )
)
)
)
- )
- (block
- (local.set $1
- (local.get $7)
- )
- (local.set $0
- (local.get $11)
+ (block
+ (local.set $1
+ (local.get $3)
+ )
+ (local.set $0
+ (local.get $7)
+ )
+ (br $while-in7)
)
- (br $while-in7)
)
- )
- (if
- (local.tee $7
- (i32.load
- (local.tee $11
- (i32.add
- (local.get $1)
- (i32.const 16)
+ (if
+ (local.tee $3
+ (i32.load
+ (local.tee $7
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
)
)
)
- )
- (block
- (local.set $1
- (local.get $7)
- )
- (local.set $0
- (local.get $11)
+ (block
+ (local.set $1
+ (local.get $3)
+ )
+ (local.set $0
+ (local.get $7)
+ )
+ (br $while-in7)
)
- (br $while-in7)
)
)
- )
- (if
- (i32.lt_u
- (local.get $0)
- (local.get $10)
- )
- (call $_abort)
- (block
- (i32.store
+ (if
+ (i32.lt_u
(local.get $0)
- (i32.const 0)
- )
- (local.set $4
- (local.get $1)
+ (local.get $11)
)
- )
- )
- )
- (block
- (if
- (i32.lt_u
- (local.tee $11
- (i32.load offset=8
- (local.get $8)
+ (call $_abort)
+ (block
+ (i32.store
+ (local.get $0)
+ (i32.const 0)
)
- )
- (local.get $10)
- )
- (call $_abort)
- )
- (if
- (i32.ne
- (local.get $8)
- (i32.load
- (local.tee $7
- (i32.add
- (local.get $11)
- (i32.const 12)
- )
+ (local.set $10
+ (local.get $1)
)
)
)
- (call $_abort)
)
- (if
- (i32.eq
- (i32.load
+ (block
+ (if
+ (i32.lt_u
(local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 8)
+ (i32.load offset=8
+ (local.get $6)
)
)
+ (local.get $11)
)
- (local.get $8)
+ (call $_abort)
)
- (block
- (i32.store
- (local.get $7)
- (local.get $0)
+ (if
+ (i32.ne
+ (local.get $6)
+ (i32.load offset=12
+ (local.get $1)
+ )
)
- (i32.store
- (local.get $1)
- (local.get $11)
+ (call $_abort)
+ )
+ (if
+ (i32.eq
+ (i32.load offset=8
+ (local.get $0)
+ )
+ (local.get $6)
)
- (local.set $4
- (local.get $0)
+ (block
+ (i32.store offset=12
+ (local.get $1)
+ (local.get $0)
+ )
+ (i32.store offset=8
+ (local.get $0)
+ (local.get $1)
+ )
+ (local.set $10
+ (local.get $0)
+ )
)
+ (call $_abort)
)
- (call $_abort)
)
)
- )
- (if
- (local.get $9)
- (block $do-once8
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (i32.shl
- (local.tee $1
- (i32.load offset=28
- (local.get $8)
+ (if
+ (local.get $8)
+ (block $do-once8
+ (if
+ (i32.eq
+ (i32.load
+ (local.tee $0
+ (i32.add
+ (i32.shl
+ (local.tee $1
+ (i32.load offset=28
+ (local.get $6)
+ )
)
+ (i32.const 2)
)
- (i32.const 2)
+ (i32.const 480)
)
- (i32.const 480)
)
)
+ (local.get $6)
)
- (local.get $8)
- )
- (block
- (i32.store
- (local.get $0)
- (local.get $4)
- )
- (if
- (i32.eqz
- (local.get $4)
+ (block
+ (i32.store
+ (local.get $0)
+ (local.get $10)
)
- (block
- (i32.store
- (i32.const 180)
- (i32.and
- (i32.load
- (i32.const 180)
- )
- (i32.xor
- (i32.shl
- (i32.const 1)
- (local.get $1)
+ (if
+ (i32.eqz
+ (local.get $10)
+ )
+ (block
+ (i32.store
+ (i32.const 180)
+ (i32.and
+ (i32.load
+ (i32.const 180)
+ )
+ (i32.xor
+ (i32.shl
+ (i32.const 1)
+ (local.get $1)
+ )
+ (i32.const -1)
)
- (i32.const -1)
)
)
+ (br $do-once8)
)
- (br $do-once8)
)
)
- )
- (block
- (if
- (i32.lt_u
- (local.get $9)
- (i32.load
- (i32.const 192)
+ (block
+ (if
+ (i32.lt_u
+ (local.get $8)
+ (i32.load
+ (i32.const 192)
+ )
)
+ (call $_abort)
)
- (call $_abort)
- )
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $9)
- (i32.const 16)
- )
+ (if
+ (i32.eq
+ (i32.load offset=16
+ (local.get $8)
)
+ (local.get $6)
+ )
+ (i32.store offset=16
+ (local.get $8)
+ (local.get $10)
+ )
+ (i32.store offset=20
+ (local.get $8)
+ (local.get $10)
)
- (local.get $8)
- )
- (i32.store
- (local.get $0)
- (local.get $4)
- )
- (i32.store offset=20
- (local.get $9)
- (local.get $4)
)
- )
- (br_if $do-once8
- (i32.eqz
- (local.get $4)
+ (br_if $do-once8
+ (i32.eqz
+ (local.get $10)
+ )
)
)
)
- )
- (if
- (i32.lt_u
- (local.get $4)
- (local.tee $0
- (i32.load
- (i32.const 192)
+ (if
+ (i32.lt_u
+ (local.get $10)
+ (local.tee $0
+ (i32.load
+ (i32.const 192)
+ )
)
)
+ (call $_abort)
)
- (call $_abort)
- )
- (i32.store offset=24
- (local.get $4)
- (local.get $9)
- )
- (if
- (local.tee $1
- (i32.load offset=16
- (local.get $8)
+ (i32.store
+ (i32.add
+ (local.get $10)
+ (i32.const 24)
)
+ (local.get $8)
)
(if
- (i32.lt_u
- (local.get $1)
- (local.get $0)
+ (local.tee $1
+ (i32.load offset=16
+ (local.get $6)
+ )
)
- (call $_abort)
- (block
- (i32.store offset=16
- (local.get $4)
+ (if
+ (i32.lt_u
(local.get $1)
+ (local.get $0)
)
- (i32.store offset=24
- (local.get $1)
- (local.get $4)
+ (call $_abort)
+ (block
+ (i32.store
+ (i32.add
+ (local.get $10)
+ (i32.const 16)
+ )
+ (local.get $1)
+ )
+ (i32.store offset=24
+ (local.get $1)
+ (local.get $10)
+ )
)
)
)
- )
- (if
- (local.tee $0
- (i32.load offset=20
- (local.get $8)
- )
- )
(if
- (i32.lt_u
- (local.get $0)
- (i32.load
- (i32.const 192)
+ (local.tee $0
+ (i32.load offset=20
+ (local.get $6)
)
)
- (call $_abort)
- (block
- (i32.store offset=20
- (local.get $4)
+ (if
+ (i32.lt_u
(local.get $0)
+ (i32.load
+ (i32.const 192)
+ )
)
- (i32.store offset=24
- (local.get $0)
- (local.get $4)
+ (call $_abort)
+ (block
+ (i32.store
+ (i32.add
+ (local.get $10)
+ (i32.const 20)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=24
+ (local.get $0)
+ (local.get $10)
+ )
)
)
)
)
)
- )
- (if
- (i32.lt_u
- (local.get $6)
- (i32.const 16)
- )
- (block
- (i32.store offset=4
- (local.get $8)
- (i32.or
- (local.tee $0
- (i32.add
- (local.get $2)
- (local.get $6)
+ (if
+ (i32.lt_u
+ (local.get $9)
+ (i32.const 16)
+ )
+ (block
+ (i32.store offset=4
+ (local.get $6)
+ (i32.or
+ (local.tee $0
+ (i32.add
+ (local.get $4)
+ (local.get $9)
+ )
)
+ (i32.const 3)
)
- (i32.const 3)
)
- )
- (i32.store
- (local.tee $0
- (i32.add
+ (i32.store offset=4
+ (local.tee $0
(i32.add
(local.get $0)
- (local.get $8)
+ (local.get $6)
)
- (i32.const 4)
)
- )
- (i32.or
- (i32.load
- (local.get $0)
+ (i32.or
+ (i32.load offset=4
+ (local.get $0)
+ )
+ (i32.const 1)
)
- (i32.const 1)
)
)
- )
- (block
- (i32.store offset=4
- (local.get $8)
- (i32.or
- (local.get $2)
- (i32.const 3)
- )
- )
- (i32.store offset=4
- (local.get $5)
- (i32.or
+ (block
+ (i32.store offset=4
(local.get $6)
- (i32.const 1)
+ (i32.or
+ (local.get $4)
+ (i32.const 3)
+ )
)
- )
- (i32.store
- (i32.add
- (local.get $5)
- (local.get $6)
+ (i32.store offset=4
+ (local.get $12)
+ (i32.or
+ (local.get $9)
+ (i32.const 1)
+ )
)
- (local.get $6)
- )
- (if
- (local.tee $0
- (i32.load
- (i32.const 184)
+ (i32.store
+ (i32.add
+ (local.get $9)
+ (local.get $12)
)
+ (local.get $9)
)
- (block
- (local.set $4
+ (if
+ (local.tee $0
(i32.load
- (i32.const 196)
+ (i32.const 184)
)
)
- (local.set $2
- (i32.add
- (i32.shl
- (local.tee $0
- (i32.shr_u
- (local.get $0)
- (i32.const 3)
- )
- )
- (i32.const 3)
+ (block
+ (local.set $4
+ (i32.load
+ (i32.const 196)
)
- (i32.const 216)
)
- )
- (if
- (i32.and
- (local.tee $1
- (i32.load
- (i32.const 176)
- )
- )
- (local.tee $0
+ (local.set $3
+ (i32.add
(i32.shl
- (i32.const 1)
- (local.get $0)
+ (local.tee $0
+ (i32.shr_u
+ (local.get $0)
+ (i32.const 3)
+ )
+ )
+ (i32.const 3)
)
+ (i32.const 216)
)
)
(if
- (i32.lt_u
- (local.tee $0
+ (i32.and
+ (local.tee $1
(i32.load
- (local.tee $1
- (i32.add
- (local.get $2)
- (i32.const 8)
- )
- )
+ (i32.const 176)
)
)
- (i32.load
- (i32.const 192)
+ (local.tee $0
+ (i32.shl
+ (i32.const 1)
+ (local.get $0)
+ )
)
)
- (call $_abort)
(block
- (local.set $12
- (local.get $1)
+ (local.set $1
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
)
- (local.set $3
- (local.get $0)
+ (if
+ (i32.lt_u
+ (local.tee $0
+ (i32.load offset=8
+ (local.get $3)
+ )
+ )
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ (call $_abort)
+ (block
+ (local.set $5
+ (local.get $1)
+ )
+ (local.set $2
+ (local.get $0)
+ )
+ )
)
)
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.or
- (local.get $0)
- (local.get $1)
+ (block
+ (i32.store
+ (i32.const 176)
+ (i32.or
+ (local.get $0)
+ (local.get $1)
+ )
)
- )
- (local.set $12
- (i32.add
- (local.get $2)
- (i32.const 8)
+ (local.set $5
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ )
+ (local.set $2
+ (local.get $3)
)
)
- (local.set $3
+ )
+ (i32.store
+ (local.get $5)
+ (local.get $4)
+ )
+ (i32.store
+ (i32.add
(local.get $2)
+ (i32.const 12)
)
+ (local.get $4)
+ )
+ (i32.store offset=8
+ (local.get $4)
+ (local.get $2)
+ )
+ (i32.store offset=12
+ (local.get $4)
+ (local.get $3)
)
)
- (i32.store
- (local.get $12)
- (local.get $4)
- )
- (i32.store offset=12
- (local.get $3)
- (local.get $4)
- )
- (i32.store offset=8
- (local.get $4)
- (local.get $3)
- )
- (i32.store offset=12
- (local.get $4)
- (local.get $2)
- )
+ )
+ (i32.store
+ (i32.const 184)
+ (local.get $9)
+ )
+ (i32.store
+ (i32.const 196)
+ (local.get $12)
)
)
- (i32.store
- (i32.const 184)
+ )
+ (return
+ (i32.add
(local.get $6)
- )
- (i32.store
- (i32.const 196)
- (local.get $5)
+ (i32.const 8)
)
)
)
- (return
- (i32.add
- (local.get $8)
- (i32.const 8)
- )
- )
+ (local.get $4)
)
- (local.get $2)
)
+ (local.get $4)
)
- (local.get $2)
)
- )
- (if (result i32)
- (i32.gt_u
- (local.get $0)
- (i32.const -65)
- )
- (i32.const -1)
- (block $do-once (result i32)
- (local.set $2
- (i32.and
- (local.tee $0
- (i32.add
- (local.get $0)
- (i32.const 11)
+ (if (result i32)
+ (i32.gt_u
+ (local.get $0)
+ (i32.const -65)
+ )
+ (i32.const -1)
+ (block $do-once (result i32)
+ (local.set $3
+ (i32.and
+ (local.tee $0
+ (i32.add
+ (local.get $0)
+ (i32.const 11)
+ )
)
+ (i32.const -8)
)
- (i32.const -8)
)
- )
- (if (result i32)
- (local.tee $18
- (i32.load
- (i32.const 180)
+ (if (result i32)
+ (local.tee $18
+ (i32.load
+ (i32.const 180)
+ )
)
- )
- (block (result i32)
- (local.set $14
- (if (result i32)
- (local.tee $0
- (i32.shr_u
- (local.get $0)
- (i32.const 8)
- )
- )
+ (block (result i32)
+ (local.set $14
(if (result i32)
- (i32.gt_u
- (local.get $2)
- (i32.const 16777215)
+ (local.tee $0
+ (i32.shr_u
+ (local.get $0)
+ (i32.const 8)
+ )
)
- (i32.const 31)
- (block (result i32)
- (local.set $4
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $0
- (i32.shl
- (local.get $0)
- (local.tee $1
- (i32.and
- (i32.shr_u
- (i32.add
- (local.get $0)
- (i32.const 1048320)
+ (if (result i32)
+ (i32.gt_u
+ (local.get $3)
+ (i32.const 16777215)
+ )
+ (i32.const 31)
+ (block (result i32)
+ (local.set $4
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (local.tee $1
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.get $0)
+ (i32.const 1048320)
+ )
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 8)
)
- (i32.const 8)
)
)
)
+ (i32.const 520192)
)
- (i32.const 520192)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 4)
)
- (i32.const 4)
)
- )
- (local.set $3
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $0
- (i32.shl
- (local.get $0)
- (local.get $4)
+ (local.set $2
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (local.get $4)
+ )
)
+ (i32.const 245760)
)
- (i32.const 245760)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 2)
)
- (i32.const 2)
)
- )
- (i32.or
- (i32.and
- (i32.shr_u
- (local.get $2)
- (i32.add
- (local.tee $0
- (i32.add
- (i32.sub
- (i32.const 14)
- (i32.or
+ (i32.or
+ (i32.and
+ (i32.shr_u
+ (local.get $3)
+ (i32.add
+ (local.tee $0
+ (i32.add
+ (i32.sub
+ (i32.const 14)
(i32.or
- (local.get $1)
- (local.get $4)
+ (i32.or
+ (local.get $1)
+ (local.get $4)
+ )
+ (local.get $2)
)
- (local.get $3)
)
- )
- (i32.shr_u
- (i32.shl
- (local.get $0)
- (local.get $3)
+ (i32.shr_u
+ (i32.shl
+ (local.get $0)
+ (local.get $2)
+ )
+ (i32.const 15)
)
- (i32.const 15)
)
)
+ (i32.const 7)
)
- (i32.const 7)
)
+ (i32.const 1)
+ )
+ (i32.shl
+ (local.get $0)
+ (i32.const 1)
)
- (i32.const 1)
- )
- (i32.shl
- (local.get $0)
- (i32.const 1)
)
)
)
+ (i32.const 0)
)
- (i32.const 0)
)
- )
- (local.set $3
- (i32.sub
- (i32.const 0)
- (local.get $2)
+ (local.set $2
+ (i32.sub
+ (i32.const 0)
+ (local.get $3)
+ )
)
- )
- (block $__rjto$3
- (block $__rjti$3
- (local.set $0
- (if (result i32)
- (local.tee $0
- (i32.load offset=480
- (i32.shl
- (local.get $14)
- (i32.const 2)
+ (block $__rjto$3
+ (block $__rjti$3
+ (local.set $0
+ (if (result i32)
+ (local.tee $0
+ (i32.load
+ (i32.add
+ (i32.shl
+ (local.get $14)
+ (i32.const 2)
+ )
+ (i32.const 480)
+ )
)
)
- )
- (block (result i32)
- (local.set $9
- (i32.shl
- (local.get $2)
- (select
- (i32.const 0)
- (i32.sub
- (i32.const 25)
- (i32.shr_u
+ (block (result i32)
+ (local.set $8
+ (i32.shl
+ (local.get $3)
+ (select
+ (i32.const 0)
+ (i32.sub
+ (i32.const 25)
+ (i32.shr_u
+ (local.get $14)
+ (i32.const 1)
+ )
+ )
+ (i32.eq
(local.get $14)
- (i32.const 1)
+ (i32.const 31)
)
)
- (i32.eq
- (local.get $14)
- (i32.const 31)
- )
)
)
- )
- (local.set $1
- (i32.const 0)
- )
- (loop $while-in14 (result i32)
- (if
- (i32.lt_u
- (local.tee $4
- (i32.sub
- (local.tee $12
- (i32.and
- (i32.load offset=4
- (local.get $0)
+ (local.set $1
+ (i32.const 0)
+ )
+ (loop $while-in14 (result i32)
+ (if
+ (i32.lt_u
+ (local.tee $4
+ (i32.sub
+ (local.tee $10
+ (i32.and
+ (i32.load
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
+ )
+ (i32.const -8)
)
- (i32.const -8)
)
+ (local.get $3)
)
- (local.get $2)
)
+ (local.get $2)
)
- (local.get $3)
- )
- (local.set $1
- (if (result i32)
- (i32.eq
- (local.get $2)
- (local.get $12)
- )
- (block
- (local.set $1
- (local.get $4)
+ (local.set $1
+ (if (result i32)
+ (i32.eq
+ (local.get $3)
+ (local.get $10)
)
- (local.set $3
- (local.get $0)
+ (block
+ (local.set $1
+ (local.get $4)
+ )
+ (local.set $2
+ (local.get $0)
+ )
+ (br $__rjti$3)
)
- (br $__rjti$3)
- )
- (block (result i32)
- (local.set $3
- (local.get $4)
+ (block (result i32)
+ (local.set $2
+ (local.get $4)
+ )
+ (local.get $0)
)
- (local.get $0)
)
)
)
- )
- (local.set $0
- (select
- (local.get $5)
- (local.tee $4
- (i32.load offset=20
- (local.get $0)
- )
- )
- (i32.or
- (i32.eqz
- (local.get $4)
+ (local.set $0
+ (select
+ (local.get $5)
+ (local.tee $4
+ (i32.load
+ (i32.add
+ (local.get $0)
+ (i32.const 20)
+ )
+ )
)
- (i32.eq
- (local.get $4)
- (local.tee $12
- (i32.load
- (i32.add
+ (i32.or
+ (i32.eqz
+ (local.get $4)
+ )
+ (i32.eq
+ (local.get $4)
+ (local.tee $10
+ (i32.load
(i32.add
- (local.get $0)
- (i32.const 16)
- )
- (i32.shl
- (i32.shr_u
- (local.get $9)
- (i32.const 31)
+ (i32.add
+ (local.get $0)
+ (i32.const 16)
+ )
+ (i32.shl
+ (i32.shr_u
+ (local.get $8)
+ (i32.const 31)
+ )
+ (i32.const 2)
)
- (i32.const 2)
)
)
)
@@ -9017,109 +8950,139 @@
)
)
)
- )
- (local.set $4
- (i32.shl
- (local.get $9)
- (i32.xor
- (local.tee $5
- (i32.eqz
- (local.get $12)
+ (local.set $4
+ (i32.shl
+ (local.get $8)
+ (i32.xor
+ (local.tee $5
+ (i32.eqz
+ (local.get $10)
+ )
)
+ (i32.const 1)
)
- (i32.const 1)
- )
- )
- )
- (if (result i32)
- (local.get $5)
- (block (result i32)
- (local.set $4
- (local.get $0)
)
- (local.get $1)
)
- (block
- (local.set $5
- (local.get $0)
- )
- (local.set $9
- (local.get $4)
+ (if (result i32)
+ (local.get $5)
+ (block (result i32)
+ (local.set $4
+ (local.get $0)
+ )
+ (local.get $1)
)
- (local.set $0
- (local.get $12)
+ (block
+ (local.set $5
+ (local.get $0)
+ )
+ (local.set $8
+ (local.get $4)
+ )
+ (local.set $0
+ (local.get $10)
+ )
+ (br $while-in14)
)
- (br $while-in14)
)
)
)
- )
- (block (result i32)
- (local.set $4
+ (block (result i32)
+ (local.set $4
+ (i32.const 0)
+ )
(i32.const 0)
)
- (i32.const 0)
)
)
- )
- (if
- (i32.eqz
- (i32.or
- (local.get $0)
- (local.get $4)
+ (if
+ (i32.eqz
+ (i32.or
+ (local.get $0)
+ (local.get $4)
+ )
)
- )
- (block
- (drop
- (br_if $do-once
- (local.get $2)
- (i32.eqz
- (local.tee $1
- (i32.and
- (local.get $18)
- (i32.or
- (local.tee $1
- (i32.shl
- (i32.const 2)
- (local.get $14)
+ (block
+ (drop
+ (br_if $do-once
+ (local.get $3)
+ (i32.eqz
+ (local.tee $1
+ (i32.and
+ (local.get $18)
+ (i32.or
+ (local.tee $1
+ (i32.shl
+ (i32.const 2)
+ (local.get $14)
+ )
+ )
+ (i32.sub
+ (i32.const 0)
+ (local.get $1)
)
- )
- (i32.sub
- (i32.const 0)
- (local.get $1)
)
)
)
)
)
)
- )
- (local.set $4
- (i32.load offset=480
- (i32.shl
+ (local.set $4
+ (i32.load
(i32.add
- (i32.or
- (i32.or
+ (i32.shl
+ (i32.add
(i32.or
(i32.or
- (local.tee $1
- (i32.and
- (i32.shr_u
- (local.tee $4
- (i32.add
- (i32.and
- (local.get $1)
- (i32.sub
- (i32.const 0)
+ (i32.or
+ (i32.or
+ (local.tee $1
+ (i32.and
+ (i32.shr_u
+ (local.tee $4
+ (i32.add
+ (i32.and
+ (local.get $1)
+ (i32.sub
+ (i32.const 0)
+ (local.get $1)
+ )
+ )
+ (i32.const -1)
+ )
+ )
+ (i32.const 12)
+ )
+ (i32.const 16)
+ )
+ )
+ (local.tee $1
+ (i32.and
+ (i32.shr_u
+ (local.tee $4
+ (i32.shr_u
+ (local.get $4)
(local.get $1)
)
)
- (i32.const -1)
+ (i32.const 5)
)
+ (i32.const 8)
)
- (i32.const 12)
)
- (i32.const 16)
+ )
+ (local.tee $1
+ (i32.and
+ (i32.shr_u
+ (local.tee $4
+ (i32.shr_u
+ (local.get $4)
+ (local.get $1)
+ )
+ )
+ (i32.const 2)
+ )
+ (i32.const 4)
+ )
)
)
(local.tee $1
@@ -9131,9 +9094,9 @@
(local.get $1)
)
)
- (i32.const 5)
+ (i32.const 1)
)
- (i32.const 8)
+ (i32.const 2)
)
)
)
@@ -9146,1889 +9109,1852 @@
(local.get $1)
)
)
- (i32.const 2)
- )
- (i32.const 4)
- )
- )
- )
- (local.tee $1
- (i32.and
- (i32.shr_u
- (local.tee $4
- (i32.shr_u
- (local.get $4)
- (local.get $1)
- )
+ (i32.const 1)
)
(i32.const 1)
)
- (i32.const 2)
)
)
- )
- (local.tee $1
- (i32.and
- (i32.shr_u
- (local.tee $4
- (i32.shr_u
- (local.get $4)
- (local.get $1)
- )
- )
- (i32.const 1)
- )
- (i32.const 1)
+ (i32.shr_u
+ (local.get $4)
+ (local.get $1)
)
)
+ (i32.const 2)
)
- (i32.shr_u
- (local.get $4)
- (local.get $1)
- )
+ (i32.const 480)
)
- (i32.const 2)
)
)
)
)
- )
- (local.set $4
- (if (result i32)
- (local.get $4)
- (block
- (local.set $1
- (local.get $3)
- )
- (local.set $3
- (local.get $4)
+ (local.set $4
+ (if (result i32)
+ (local.get $4)
+ (block
+ (local.set $1
+ (local.get $2)
+ )
+ (local.set $2
+ (local.get $4)
+ )
+ (br $__rjti$3)
)
- (br $__rjti$3)
+ (local.get $0)
)
- (local.get $0)
)
+ (br $__rjto$3)
)
- (br $__rjto$3)
- )
- (local.set $3
- (loop $while-in16 (result i32)
- (local.set $12
- (i32.lt_u
- (local.tee $4
- (i32.sub
- (i32.and
- (i32.load offset=4
- (local.get $3)
+ (local.set $2
+ (loop $while-in16 (result i32)
+ (local.set $10
+ (i32.lt_u
+ (local.tee $4
+ (i32.sub
+ (i32.and
+ (i32.load
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ )
+ (i32.const -8)
)
- (i32.const -8)
+ (local.get $3)
)
- (local.get $2)
)
+ (local.get $1)
)
- (local.get $1)
- )
- )
- (local.set $1
- (select
- (local.get $4)
- (local.get $1)
- (local.get $12)
)
- )
- (local.set $0
- (select
- (local.get $3)
- (local.get $0)
- (local.get $12)
+ (local.set $1
+ (select
+ (local.get $4)
+ (local.get $1)
+ (local.get $10)
+ )
)
- )
- (if
- (local.tee $4
- (i32.load offset=16
- (local.get $3)
+ (local.set $0
+ (select
+ (local.get $2)
+ (local.get $0)
+ (local.get $10)
)
)
- (block
- (local.set $3
- (local.get $4)
+ (if
+ (local.tee $4
+ (i32.load
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ )
+ )
+ (block
+ (local.set $2
+ (local.get $4)
+ )
+ (br $while-in16)
)
- (br $while-in16)
)
- )
- (br_if $while-in16
- (local.tee $3
- (i32.load offset=20
- (local.get $3)
+ (br_if $while-in16
+ (local.tee $2
+ (i32.load
+ (i32.add
+ (local.get $2)
+ (i32.const 20)
+ )
+ )
)
)
+ (local.set $4
+ (local.get $0)
+ )
+ (local.get $1)
)
- (local.set $4
- (local.get $0)
- )
- (local.get $1)
)
)
- )
- (if (result i32)
- (local.get $4)
(if (result i32)
- (i32.lt_u
- (local.get $3)
- (i32.sub
- (i32.load
- (i32.const 184)
- )
+ (local.get $4)
+ (if (result i32)
+ (i32.lt_u
(local.get $2)
- )
- )
- (block
- (if
- (i32.lt_u
- (local.get $4)
- (local.tee $8
- (i32.load
- (i32.const 192)
- )
+ (i32.sub
+ (i32.load
+ (i32.const 184)
)
+ (local.get $3)
)
- (call $_abort)
)
- (if
- (i32.ge_u
- (local.get $4)
- (local.tee $5
- (i32.add
- (local.get $2)
- (local.get $4)
+ (block
+ (if
+ (i32.lt_u
+ (local.get $4)
+ (local.tee $11
+ (i32.load
+ (i32.const 192)
+ )
)
)
+ (call $_abort)
)
- (call $_abort)
- )
- (local.set $12
- (i32.load offset=24
- (local.get $4)
+ (if
+ (i32.ge_u
+ (local.get $4)
+ (local.tee $5
+ (i32.add
+ (local.get $3)
+ (local.get $4)
+ )
+ )
+ )
+ (call $_abort)
)
- )
- (if
- (i32.eq
- (local.tee $0
- (i32.load offset=12
+ (local.set $10
+ (i32.load
+ (i32.add
(local.get $4)
+ (i32.const 24)
)
)
- (local.get $4)
)
- (block $do-once17
- (if
- (i32.eqz
- (local.tee $1
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $4)
- (i32.const 20)
- )
- )
+ (if
+ (i32.eq
+ (local.tee $0
+ (i32.load
+ (i32.add
+ (local.get $4)
+ (i32.const 12)
)
)
)
- (br_if $do-once17
+ (local.get $4)
+ )
+ (block $do-once17
+ (if
(i32.eqz
(local.tee $1
(i32.load
(local.tee $0
(i32.add
(local.get $4)
- (i32.const 16)
+ (i32.const 20)
)
)
)
)
)
- )
- )
- (loop $while-in20
- (if
- (local.tee $7
- (i32.load
- (local.tee $11
- (i32.add
- (local.get $1)
- (i32.const 20)
+ (br_if $do-once17
+ (i32.eqz
+ (local.tee $1
+ (i32.load
+ (local.tee $0
+ (i32.add
+ (local.get $4)
+ (i32.const 16)
+ )
+ )
)
)
)
)
- (block
- (local.set $1
- (local.get $7)
- )
- (local.set $0
- (local.get $11)
- )
- (br $while-in20)
- )
)
- (if
- (local.tee $7
- (i32.load
- (local.tee $11
- (i32.add
- (local.get $1)
- (i32.const 16)
+ (loop $while-in20
+ (if
+ (local.tee $7
+ (i32.load
+ (local.tee $9
+ (i32.add
+ (local.get $1)
+ (i32.const 20)
+ )
)
)
)
+ (block
+ (local.set $1
+ (local.get $7)
+ )
+ (local.set $0
+ (local.get $9)
+ )
+ (br $while-in20)
+ )
)
- (block
- (local.set $1
- (local.get $7)
+ (if
+ (local.tee $7
+ (i32.load
+ (local.tee $9
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
+ )
+ )
)
- (local.set $0
- (local.get $11)
+ (block
+ (local.set $1
+ (local.get $7)
+ )
+ (local.set $0
+ (local.get $9)
+ )
+ (br $while-in20)
)
- (br $while-in20)
)
)
- )
- (if
- (i32.lt_u
- (local.get $0)
- (local.get $8)
- )
- (call $_abort)
- (block
- (i32.store
+ (if
+ (i32.lt_u
(local.get $0)
- (i32.const 0)
- )
- (local.set $10
- (local.get $1)
+ (local.get $11)
)
- )
- )
- )
- (block
- (if
- (i32.lt_u
- (local.tee $11
- (i32.load offset=8
- (local.get $4)
+ (call $_abort)
+ (block
+ (i32.store
+ (local.get $0)
+ (i32.const 0)
)
- )
- (local.get $8)
- )
- (call $_abort)
- )
- (if
- (i32.ne
- (local.get $4)
- (i32.load
- (local.tee $7
- (i32.add
- (local.get $11)
- (i32.const 12)
- )
+ (local.set $12
+ (local.get $1)
)
)
)
- (call $_abort)
)
- (if
- (i32.eq
- (i32.load
+ (block
+ (if
+ (i32.lt_u
(local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 8)
+ (i32.load
+ (i32.add
+ (local.get $4)
+ (i32.const 8)
+ )
)
)
+ (local.get $11)
)
- (local.get $4)
+ (call $_abort)
)
- (block
- (i32.store
- (local.get $7)
- (local.get $0)
+ (if
+ (i32.ne
+ (local.get $4)
+ (i32.load offset=12
+ (local.get $1)
+ )
)
- (i32.store
- (local.get $1)
- (local.get $11)
+ (call $_abort)
+ )
+ (if
+ (i32.eq
+ (i32.load offset=8
+ (local.get $0)
+ )
+ (local.get $4)
)
- (local.set $10
- (local.get $0)
+ (block
+ (i32.store offset=12
+ (local.get $1)
+ (local.get $0)
+ )
+ (i32.store offset=8
+ (local.get $0)
+ (local.get $1)
+ )
+ (local.set $12
+ (local.get $0)
+ )
)
+ (call $_abort)
)
- (call $_abort)
)
)
- )
- (if
- (local.get $12)
- (block $do-once21
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (i32.shl
- (local.tee $1
- (i32.load offset=28
- (local.get $4)
+ (if
+ (local.get $10)
+ (block $do-once21
+ (if
+ (i32.eq
+ (i32.load
+ (local.tee $0
+ (i32.add
+ (i32.shl
+ (local.tee $1
+ (i32.load
+ (i32.add
+ (local.get $4)
+ (i32.const 28)
+ )
+ )
)
+ (i32.const 2)
)
- (i32.const 2)
+ (i32.const 480)
)
- (i32.const 480)
)
)
+ (local.get $4)
)
- (local.get $4)
- )
- (block
- (i32.store
- (local.get $0)
- (local.get $10)
- )
- (if
- (i32.eqz
- (local.get $10)
+ (block
+ (i32.store
+ (local.get $0)
+ (local.get $12)
)
- (block
- (i32.store
- (i32.const 180)
- (i32.and
- (i32.load
- (i32.const 180)
- )
- (i32.xor
- (i32.shl
- (i32.const 1)
- (local.get $1)
+ (if
+ (i32.eqz
+ (local.get $12)
+ )
+ (block
+ (i32.store
+ (i32.const 180)
+ (i32.and
+ (i32.load
+ (i32.const 180)
+ )
+ (i32.xor
+ (i32.shl
+ (i32.const 1)
+ (local.get $1)
+ )
+ (i32.const -1)
)
- (i32.const -1)
)
)
+ (br $do-once21)
)
- (br $do-once21)
)
)
- )
- (block
- (if
- (i32.lt_u
- (local.get $12)
- (i32.load
- (i32.const 192)
+ (block
+ (if
+ (i32.lt_u
+ (local.get $10)
+ (i32.load
+ (i32.const 192)
+ )
)
+ (call $_abort)
)
- (call $_abort)
- )
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $12)
- (i32.const 16)
- )
+ (if
+ (i32.eq
+ (i32.load offset=16
+ (local.get $10)
)
+ (local.get $4)
+ )
+ (i32.store offset=16
+ (local.get $10)
+ (local.get $12)
+ )
+ (i32.store offset=20
+ (local.get $10)
+ (local.get $12)
)
- (local.get $4)
- )
- (i32.store
- (local.get $0)
- (local.get $10)
- )
- (i32.store offset=20
- (local.get $12)
- (local.get $10)
)
- )
- (br_if $do-once21
- (i32.eqz
- (local.get $10)
+ (br_if $do-once21
+ (i32.eqz
+ (local.get $12)
+ )
)
)
)
- )
- (if
- (i32.lt_u
- (local.get $10)
- (local.tee $0
- (i32.load
- (i32.const 192)
+ (if
+ (i32.lt_u
+ (local.get $12)
+ (local.tee $0
+ (i32.load
+ (i32.const 192)
+ )
)
)
+ (call $_abort)
)
- (call $_abort)
- )
- (i32.store offset=24
- (local.get $10)
- (local.get $12)
- )
- (if
- (local.tee $1
- (i32.load offset=16
- (local.get $4)
+ (i32.store
+ (i32.add
+ (local.get $12)
+ (i32.const 24)
)
+ (local.get $10)
)
(if
- (i32.lt_u
- (local.get $1)
- (local.get $0)
+ (local.tee $1
+ (i32.load
+ (i32.add
+ (local.get $4)
+ (i32.const 16)
+ )
+ )
)
- (call $_abort)
- (block
- (i32.store offset=16
- (local.get $10)
+ (if
+ (i32.lt_u
(local.get $1)
+ (local.get $0)
)
- (i32.store offset=24
- (local.get $1)
- (local.get $10)
+ (call $_abort)
+ (block
+ (i32.store
+ (i32.add
+ (local.get $12)
+ (i32.const 16)
+ )
+ (local.get $1)
+ )
+ (i32.store offset=24
+ (local.get $1)
+ (local.get $12)
+ )
)
)
)
- )
- (if
- (local.tee $0
- (i32.load offset=20
- (local.get $4)
- )
- )
(if
- (i32.lt_u
- (local.get $0)
+ (local.tee $0
(i32.load
- (i32.const 192)
+ (i32.add
+ (local.get $4)
+ (i32.const 20)
+ )
)
)
- (call $_abort)
- (block
- (i32.store offset=20
- (local.get $10)
+ (if
+ (i32.lt_u
(local.get $0)
+ (i32.load
+ (i32.const 192)
+ )
)
- (i32.store offset=24
- (local.get $0)
- (local.get $10)
+ (call $_abort)
+ (block
+ (i32.store
+ (i32.add
+ (local.get $12)
+ (i32.const 20)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=24
+ (local.get $0)
+ (local.get $12)
+ )
)
)
)
)
)
- )
- (if
- (i32.lt_u
- (local.get $3)
- (i32.const 16)
- )
- (block
- (i32.store offset=4
- (local.get $4)
- (i32.or
- (local.tee $0
- (i32.add
- (local.get $2)
- (local.get $3)
+ (if
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 16)
+ )
+ (block
+ (i32.store
+ (i32.add
+ (local.get $4)
+ (i32.const 4)
+ )
+ (i32.or
+ (local.tee $0
+ (i32.add
+ (local.get $2)
+ (local.get $3)
+ )
)
+ (i32.const 3)
)
- (i32.const 3)
)
- )
- (i32.store
- (local.tee $0
- (i32.add
+ (i32.store offset=4
+ (local.tee $0
(i32.add
(local.get $0)
(local.get $4)
)
- (i32.const 4)
)
- )
- (i32.or
- (i32.load
- (local.get $0)
+ (i32.or
+ (i32.load offset=4
+ (local.get $0)
+ )
+ (i32.const 1)
)
- (i32.const 1)
- )
- )
- )
- (block $do-once25
- (i32.store offset=4
- (local.get $4)
- (i32.or
- (local.get $2)
- (i32.const 3)
)
)
- (i32.store offset=4
- (local.get $5)
- (i32.or
- (local.get $3)
- (i32.const 1)
+ (block $do-once25
+ (i32.store
+ (i32.add
+ (local.get $4)
+ (i32.const 4)
+ )
+ (i32.or
+ (local.get $3)
+ (i32.const 3)
+ )
)
- )
- (i32.store
- (i32.add
- (local.get $3)
+ (i32.store offset=4
(local.get $5)
+ (i32.or
+ (local.get $2)
+ (i32.const 1)
+ )
)
- (local.get $3)
- )
- (local.set $0
- (i32.shr_u
- (local.get $3)
- (i32.const 3)
+ (i32.store
+ (i32.add
+ (local.get $2)
+ (local.get $5)
+ )
+ (local.get $2)
)
- )
- (if
- (i32.lt_u
- (local.get $3)
- (i32.const 256)
+ (local.set $0
+ (i32.shr_u
+ (local.get $2)
+ (i32.const 3)
+ )
)
- (block
- (local.set $3
- (i32.add
- (i32.shl
- (local.get $0)
- (i32.const 3)
- )
- (i32.const 216)
- )
+ (if
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 256)
)
- (if
- (i32.and
- (local.tee $1
- (i32.load
- (i32.const 176)
- )
- )
- (local.tee $0
+ (block
+ (local.set $2
+ (i32.add
(i32.shl
- (i32.const 1)
(local.get $0)
+ (i32.const 3)
)
+ (i32.const 216)
)
)
(if
- (i32.lt_u
- (local.tee $0
+ (i32.and
+ (local.tee $1
(i32.load
- (local.tee $1
- (i32.add
- (local.get $3)
- (i32.const 8)
+ (i32.const 176)
+ )
+ )
+ (local.tee $0
+ (i32.shl
+ (i32.const 1)
+ (local.get $0)
+ )
+ )
+ )
+ (block
+ (local.set $1
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ )
+ (if
+ (i32.lt_u
+ (local.tee $0
+ (i32.load offset=8
+ (local.get $2)
)
)
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ (call $_abort)
+ (block
+ (local.set $13
+ (local.get $1)
+ )
+ (local.set $6
+ (local.get $0)
+ )
)
- )
- (i32.load
- (i32.const 192)
)
)
- (call $_abort)
(block
+ (i32.store
+ (i32.const 176)
+ (i32.or
+ (local.get $0)
+ (local.get $1)
+ )
+ )
(local.set $13
- (local.get $1)
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
)
(local.set $6
- (local.get $0)
+ (local.get $2)
)
)
)
- (block
- (i32.store
- (i32.const 176)
- (i32.or
- (local.get $0)
- (local.get $1)
- )
- )
- (local.set $13
- (i32.add
- (local.get $3)
- (i32.const 8)
- )
- )
- (local.set $6
- (local.get $3)
+ (i32.store
+ (local.get $13)
+ (local.get $5)
+ )
+ (i32.store
+ (i32.add
+ (local.get $6)
+ (i32.const 12)
)
+ (local.get $5)
)
+ (i32.store offset=8
+ (local.get $5)
+ (local.get $6)
+ )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $2)
+ )
+ (br $do-once25)
)
- (i32.store
- (local.get $13)
- (local.get $5)
- )
- (i32.store offset=12
- (local.get $6)
- (local.get $5)
- )
- (i32.store offset=8
- (local.get $5)
- (local.get $6)
- )
- (i32.store offset=12
- (local.get $5)
- (local.get $3)
- )
- (br $do-once25)
)
- )
- (local.set $2
- (i32.add
- (i32.shl
- (local.tee $7
- (if (result i32)
- (local.tee $0
- (i32.shr_u
- (local.get $3)
- (i32.const 8)
- )
- )
+ (local.set $3
+ (i32.add
+ (i32.shl
+ (local.tee $7
(if (result i32)
- (i32.gt_u
- (local.get $3)
- (i32.const 16777215)
+ (local.tee $0
+ (i32.shr_u
+ (local.get $2)
+ (i32.const 8)
+ )
)
- (i32.const 31)
- (block (result i32)
- (local.set $7
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $0
- (i32.shl
- (local.get $0)
- (local.tee $1
- (i32.and
- (i32.shr_u
- (i32.add
- (local.get $0)
- (i32.const 1048320)
+ (if (result i32)
+ (i32.gt_u
+ (local.get $2)
+ (i32.const 16777215)
+ )
+ (i32.const 31)
+ (block (result i32)
+ (local.set $7
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (local.tee $1
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.get $0)
+ (i32.const 1048320)
+ )
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 8)
)
- (i32.const 8)
)
)
)
+ (i32.const 520192)
)
- (i32.const 520192)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 4)
)
- (i32.const 4)
)
- )
- (local.set $2
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $0
- (i32.shl
- (local.get $0)
- (local.get $7)
+ (local.set $3
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (local.get $7)
+ )
)
+ (i32.const 245760)
)
- (i32.const 245760)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 2)
)
- (i32.const 2)
)
- )
- (i32.or
- (i32.and
- (i32.shr_u
- (local.get $3)
- (i32.add
- (local.tee $0
- (i32.add
- (i32.sub
- (i32.const 14)
- (i32.or
+ (i32.or
+ (i32.and
+ (i32.shr_u
+ (local.get $2)
+ (i32.add
+ (local.tee $0
+ (i32.add
+ (i32.sub
+ (i32.const 14)
(i32.or
- (local.get $1)
- (local.get $7)
+ (i32.or
+ (local.get $1)
+ (local.get $7)
+ )
+ (local.get $3)
)
- (local.get $2)
)
- )
- (i32.shr_u
- (i32.shl
- (local.get $0)
- (local.get $2)
+ (i32.shr_u
+ (i32.shl
+ (local.get $0)
+ (local.get $3)
+ )
+ (i32.const 15)
)
- (i32.const 15)
)
)
+ (i32.const 7)
)
- (i32.const 7)
)
+ (i32.const 1)
+ )
+ (i32.shl
+ (local.get $0)
+ (i32.const 1)
)
- (i32.const 1)
- )
- (i32.shl
- (local.get $0)
- (i32.const 1)
)
)
)
+ (i32.const 0)
)
- (i32.const 0)
)
+ (i32.const 2)
)
- (i32.const 2)
+ (i32.const 480)
)
- (i32.const 480)
)
- )
- (i32.store offset=28
- (local.get $5)
- (local.get $7)
- )
- (i32.store offset=4
- (local.tee $0
+ (i32.store offset=28
+ (local.get $5)
+ (local.get $7)
+ )
+ (i32.store offset=4
(i32.add
(local.get $5)
(i32.const 16)
)
+ (i32.const 0)
)
- (i32.const 0)
- )
- (i32.store
- (local.get $0)
- (i32.const 0)
- )
- (if
- (i32.eqz
- (i32.and
- (local.tee $1
- (i32.load
- (i32.const 180)
+ (i32.store offset=16
+ (local.get $5)
+ (i32.const 0)
+ )
+ (if
+ (i32.eqz
+ (i32.and
+ (local.tee $1
+ (i32.load
+ (i32.const 180)
+ )
)
- )
- (local.tee $0
- (i32.shl
- (i32.const 1)
- (local.get $7)
+ (local.tee $0
+ (i32.shl
+ (i32.const 1)
+ (local.get $7)
+ )
)
)
)
- )
- (block
- (i32.store
- (i32.const 180)
- (i32.or
- (local.get $0)
- (local.get $1)
+ (block
+ (i32.store
+ (i32.const 180)
+ (i32.or
+ (local.get $0)
+ (local.get $1)
+ )
)
+ (i32.store
+ (local.get $3)
+ (local.get $5)
+ )
+ (i32.store offset=24
+ (local.get $5)
+ (local.get $3)
+ )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $5)
+ )
+ (i32.store offset=8
+ (local.get $5)
+ (local.get $5)
+ )
+ (br $do-once25)
)
- (i32.store
- (local.get $2)
- (local.get $5)
- )
- (i32.store offset=24
- (local.get $5)
- (local.get $2)
- )
- (i32.store offset=12
- (local.get $5)
- (local.get $5)
- )
- (i32.store offset=8
- (local.get $5)
- (local.get $5)
- )
- (br $do-once25)
)
- )
- (local.set $7
- (i32.shl
- (local.get $3)
- (select
- (i32.const 0)
- (i32.sub
- (i32.const 25)
- (i32.shr_u
+ (local.set $7
+ (i32.shl
+ (local.get $2)
+ (select
+ (i32.const 0)
+ (i32.sub
+ (i32.const 25)
+ (i32.shr_u
+ (local.get $7)
+ (i32.const 1)
+ )
+ )
+ (i32.eq
(local.get $7)
- (i32.const 1)
+ (i32.const 31)
)
)
- (i32.eq
- (local.get $7)
- (i32.const 31)
- )
)
)
- )
- (local.set $0
- (i32.load
- (local.get $2)
+ (local.set $0
+ (i32.load
+ (local.get $3)
+ )
)
- )
- (block $__rjto$1
- (block $__rjti$1
- (loop $while-in28
- (br_if $__rjti$1
- (i32.eq
- (i32.and
- (i32.load offset=4
- (local.get $0)
+ (block $__rjto$1
+ (block $__rjti$1
+ (loop $while-in28
+ (br_if $__rjti$1
+ (i32.eq
+ (i32.and
+ (i32.load
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
+ )
+ (i32.const -8)
)
- (i32.const -8)
+ (local.get $2)
)
- (local.get $3)
)
- )
- (local.set $2
- (i32.shl
- (local.get $7)
- (i32.const 1)
+ (local.set $3
+ (i32.shl
+ (local.get $7)
+ (i32.const 1)
+ )
)
- )
- (if
- (local.tee $1
- (i32.load
- (local.tee $7
- (i32.add
+ (if
+ (local.tee $1
+ (i32.load
+ (local.tee $7
(i32.add
- (local.get $0)
- (i32.const 16)
- )
- (i32.shl
- (i32.shr_u
- (local.get $7)
- (i32.const 31)
+ (i32.add
+ (local.get $0)
+ (i32.const 16)
+ )
+ (i32.shl
+ (i32.shr_u
+ (local.get $7)
+ (i32.const 31)
+ )
+ (i32.const 2)
)
- (i32.const 2)
)
)
)
)
+ (block
+ (local.set $7
+ (local.get $3)
+ )
+ (local.set $0
+ (local.get $1)
+ )
+ (br $while-in28)
+ )
+ )
+ )
+ (if
+ (i32.lt_u
+ (local.get $7)
+ (i32.load
+ (i32.const 192)
+ )
)
+ (call $_abort)
(block
- (local.set $7
- (local.get $2)
+ (i32.store
+ (local.get $7)
+ (local.get $5)
)
- (local.set $0
- (local.get $1)
+ (i32.store offset=24
+ (local.get $5)
+ (local.get $0)
+ )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $5)
)
- (br $while-in28)
+ (i32.store offset=8
+ (local.get $5)
+ (local.get $5)
+ )
+ (br $do-once25)
)
)
+ (br $__rjto$1)
)
(if
- (i32.lt_u
- (local.get $7)
- (i32.load
- (i32.const 192)
+ (i32.and
+ (i32.ge_u
+ (local.tee $2
+ (i32.load offset=8
+ (local.get $0)
+ )
+ )
+ (local.tee $1
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ )
+ (i32.ge_u
+ (local.get $0)
+ (local.get $1)
)
)
- (call $_abort)
(block
- (i32.store
- (local.get $7)
+ (i32.store offset=12
+ (local.get $2)
(local.get $5)
)
- (i32.store offset=24
- (local.get $5)
+ (i32.store offset=8
(local.get $0)
- )
- (i32.store offset=12
- (local.get $5)
(local.get $5)
)
(i32.store offset=8
(local.get $5)
- (local.get $5)
+ (local.get $2)
)
- (br $do-once25)
- )
- )
- (br $__rjto$1)
- )
- (if
- (i32.and
- (i32.ge_u
- (local.tee $2
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
- )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $0)
)
- (local.tee $1
- (i32.load
- (i32.const 192)
- )
+ (i32.store offset=24
+ (local.get $5)
+ (i32.const 0)
)
)
- (i32.ge_u
- (local.get $0)
- (local.get $1)
- )
- )
- (block
- (i32.store offset=12
- (local.get $2)
- (local.get $5)
- )
- (i32.store
- (local.get $3)
- (local.get $5)
- )
- (i32.store offset=8
- (local.get $5)
- (local.get $2)
- )
- (i32.store offset=12
- (local.get $5)
- (local.get $0)
- )
- (i32.store offset=24
- (local.get $5)
- (i32.const 0)
- )
+ (call $_abort)
)
- (call $_abort)
)
)
)
- )
- (return
- (i32.add
- (local.get $4)
- (i32.const 8)
+ (return
+ (i32.add
+ (local.get $4)
+ (i32.const 8)
+ )
)
)
+ (local.get $3)
)
- (local.get $2)
+ (local.get $3)
)
- (local.get $2)
)
+ (local.get $3)
)
- (local.get $2)
)
)
)
)
- )
- (if
- (i32.ge_u
- (local.tee $1
- (i32.load
- (i32.const 184)
- )
- )
- (local.get $0)
- )
- (block
- (local.set $2
- (i32.load
- (i32.const 196)
+ (if
+ (i32.ge_u
+ (local.tee $1
+ (i32.load
+ (i32.const 184)
+ )
)
+ (local.get $0)
)
- (if
- (i32.gt_u
- (local.tee $3
- (i32.sub
- (local.get $1)
- (local.get $0)
- )
+ (block
+ (local.set $3
+ (i32.load
+ (i32.const 196)
)
- (i32.const 15)
)
- (block
- (i32.store
- (i32.const 196)
- (local.tee $1
- (i32.add
+ (if
+ (i32.gt_u
+ (local.tee $2
+ (i32.sub
+ (local.get $1)
(local.get $0)
- (local.get $2)
)
)
+ (i32.const 15)
)
- (i32.store
- (i32.const 184)
- (local.get $3)
- )
- (i32.store offset=4
- (local.get $1)
- (i32.or
- (local.get $3)
- (i32.const 1)
+ (block
+ (i32.store
+ (i32.const 196)
+ (local.tee $1
+ (i32.add
+ (local.get $0)
+ (local.get $3)
+ )
+ )
)
- )
- (i32.store
- (i32.add
+ (i32.store
+ (i32.const 184)
+ (local.get $2)
+ )
+ (i32.store offset=4
(local.get $1)
+ (i32.or
+ (local.get $2)
+ (i32.const 1)
+ )
+ )
+ (i32.store
+ (i32.add
+ (local.get $1)
+ (local.get $2)
+ )
+ (local.get $2)
+ )
+ (i32.store offset=4
(local.get $3)
+ (i32.or
+ (local.get $0)
+ (i32.const 3)
+ )
)
- (local.get $3)
)
- (i32.store offset=4
- (local.get $2)
- (i32.or
- (local.get $0)
- (i32.const 3)
+ (block
+ (i32.store
+ (i32.const 184)
+ (i32.const 0)
)
- )
- )
- (block
- (i32.store
- (i32.const 184)
- (i32.const 0)
- )
- (i32.store
- (i32.const 196)
- (i32.const 0)
- )
- (i32.store offset=4
- (local.get $2)
- (i32.or
- (local.get $1)
- (i32.const 3)
+ (i32.store
+ (i32.const 196)
+ (i32.const 0)
)
- )
- (i32.store
- (local.tee $0
- (i32.add
+ (i32.store offset=4
+ (local.get $3)
+ (i32.or
+ (local.get $1)
+ (i32.const 3)
+ )
+ )
+ (i32.store offset=4
+ (local.tee $0
(i32.add
(local.get $1)
- (local.get $2)
+ (local.get $3)
)
- (i32.const 4)
)
- )
- (i32.or
- (i32.load
- (local.get $0)
+ (i32.or
+ (i32.load offset=4
+ (local.get $0)
+ )
+ (i32.const 1)
)
- (i32.const 1)
)
)
)
- )
- (return
- (i32.add
- (local.get $2)
- (i32.const 8)
- )
+ (br $folding-inner1)
)
)
- )
- (block $folding-inner0
- (br_if $folding-inner0
- (i32.gt_u
- (local.tee $1
- (i32.load
- (i32.const 188)
+ (block $folding-inner0
+ (br_if $folding-inner0
+ (i32.gt_u
+ (local.tee $1
+ (i32.load
+ (i32.const 188)
+ )
)
- )
- (local.get $0)
- )
- )
- (if
- (i32.eqz
- (i32.load
- (i32.const 648)
+ (local.get $0)
)
)
(if
- (i32.and
- (local.tee $1
- (call $_sysconf
- (i32.const 30)
- )
- )
- (i32.add
- (local.get $1)
- (i32.const -1)
+ (i32.eqz
+ (i32.load
+ (i32.const 648)
)
)
- (call $_abort)
- (block
- (i32.store
- (i32.const 656)
- (local.get $1)
- )
- (i32.store
- (i32.const 652)
- (local.get $1)
- )
- (i32.store
- (i32.const 660)
- (i32.const -1)
- )
- (i32.store
- (i32.const 664)
- (i32.const -1)
- )
- (i32.store
- (i32.const 668)
- (i32.const 0)
- )
- (i32.store
- (i32.const 620)
- (i32.const 0)
+ (if
+ (i32.and
+ (local.tee $1
+ (call $_sysconf
+ (i32.const 30)
+ )
+ )
+ (i32.add
+ (local.get $1)
+ (i32.const -1)
+ )
)
- (i32.store
- (i32.const 648)
- (i32.xor
- (i32.and
- (call $_time
- (i32.const 0)
+ (call $_abort)
+ (block
+ (i32.store
+ (i32.const 656)
+ (local.get $1)
+ )
+ (i32.store
+ (i32.const 652)
+ (local.get $1)
+ )
+ (i32.store
+ (i32.const 660)
+ (i32.const -1)
+ )
+ (i32.store
+ (i32.const 664)
+ (i32.const -1)
+ )
+ (i32.store
+ (i32.const 668)
+ (i32.const 0)
+ )
+ (i32.store
+ (i32.const 620)
+ (i32.const 0)
+ )
+ (i32.store
+ (i32.const 648)
+ (i32.xor
+ (i32.and
+ (call $_time
+ (i32.const 0)
+ )
+ (i32.const -16)
)
- (i32.const -16)
+ (i32.const 1431655768)
)
- (i32.const 1431655768)
)
)
)
)
- )
- (if
- (i32.le_u
- (local.tee $6
- (i32.and
- (local.tee $5
- (i32.add
- (local.tee $1
- (i32.load
- (i32.const 656)
+ (if
+ (i32.le_u
+ (local.tee $6
+ (i32.and
+ (local.tee $5
+ (i32.add
+ (local.tee $1
+ (i32.load
+ (i32.const 656)
+ )
)
- )
- (local.tee $9
- (i32.add
- (local.get $0)
- (i32.const 47)
+ (local.tee $8
+ (i32.add
+ (local.get $0)
+ (i32.const 47)
+ )
)
)
)
- )
- (local.tee $12
- (i32.sub
- (i32.const 0)
- (local.get $1)
+ (local.tee $10
+ (i32.sub
+ (i32.const 0)
+ (local.get $1)
+ )
)
)
)
+ (local.get $0)
)
- (local.get $0)
- )
- (return
- (i32.const 0)
- )
- )
- (if
- (local.tee $2
- (i32.load
- (i32.const 616)
+ (return
+ (i32.const 0)
)
)
(if
- (i32.or
- (i32.le_u
- (local.tee $1
- (i32.add
- (local.tee $3
- (i32.load
- (i32.const 608)
+ (local.tee $3
+ (i32.load
+ (i32.const 616)
+ )
+ )
+ (if
+ (i32.or
+ (i32.le_u
+ (local.tee $1
+ (i32.add
+ (local.tee $2
+ (i32.load
+ (i32.const 608)
+ )
)
+ (local.get $6)
)
- (local.get $6)
)
+ (local.get $2)
+ )
+ (i32.gt_u
+ (local.get $1)
+ (local.get $3)
)
- (local.get $3)
)
- (i32.gt_u
- (local.get $1)
- (local.get $2)
+ (return
+ (i32.const 0)
)
)
- (return
- (i32.const 0)
- )
)
- )
- (local.set $10
- (i32.add
- (local.get $0)
- (i32.const 48)
+ (local.set $12
+ (i32.add
+ (local.get $0)
+ (i32.const 48)
+ )
)
- )
- (block $__rjto$13
- (block $__rjti$13
- (if
- (i32.eqz
- (i32.and
- (i32.load
- (i32.const 620)
+ (block $__rjto$13
+ (block $__rjti$13
+ (if
+ (i32.eqz
+ (i32.and
+ (i32.load
+ (i32.const 620)
+ )
+ (i32.const 4)
)
- (i32.const 4)
)
- )
- (block
- (block $label$break$L279
- (block $__rjti$5
- (block $__rjti$4
- (br_if $__rjti$4
- (i32.eqz
- (local.tee $4
- (i32.load
- (i32.const 200)
+ (block
+ (block $label$break$L279
+ (block $__rjti$5
+ (block $__rjti$4
+ (br_if $__rjti$4
+ (i32.eqz
+ (local.tee $4
+ (i32.load
+ (i32.const 200)
+ )
)
)
)
- )
- (local.set $1
- (i32.const 624)
- )
- (loop $while-in34
- (block $while-out33
- (if
- (i32.le_u
- (local.tee $3
- (i32.load
- (local.get $1)
- )
- )
- (local.get $4)
- )
+ (local.set $1
+ (i32.const 624)
+ )
+ (loop $while-in34
+ (block $while-out33
(if
- (i32.gt_u
- (i32.add
- (local.get $3)
+ (i32.le_u
+ (local.tee $2
(i32.load
- (local.tee $2
- (i32.add
- (local.get $1)
- (i32.const 4)
- )
- )
+ (local.get $1)
)
)
(local.get $4)
)
- (block
- (local.set $4
- (local.get $1)
+ (if
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.load
+ (local.tee $3
+ (i32.add
+ (local.get $1)
+ (i32.const 4)
+ )
+ )
+ )
+ )
+ (local.get $4)
+ )
+ (block
+ (local.set $4
+ (local.get $1)
+ )
+ (br $while-out33)
)
- (br $while-out33)
- )
- )
- )
- (br_if $while-in34
- (local.tee $1
- (i32.load offset=8
- (local.get $1)
)
)
- )
- (br $__rjti$4)
- )
- )
- (if
- (i32.lt_u
- (local.tee $3
- (i32.and
- (i32.sub
- (local.get $5)
+ (br_if $while-in34
+ (local.tee $1
(i32.load
- (i32.const 188)
+ (i32.add
+ (local.get $1)
+ (i32.const 8)
+ )
)
)
- (local.get $12)
)
+ (br $__rjti$4)
)
- (i32.const 2147483647)
)
- (block
- (local.set $1
- (call $_sbrk
- (local.get $3)
- )
- )
- (if
- (i32.eq
- (i32.add
- (i32.load
- (local.get $4)
- )
- (i32.load
- (local.get $2)
+ (if
+ (i32.lt_u
+ (local.tee $2
+ (i32.and
+ (i32.sub
+ (local.get $5)
+ (i32.load
+ (i32.const 188)
+ )
)
+ (local.get $10)
)
- (local.get $1)
)
- (br_if $__rjti$13
- (i32.ne
- (local.get $1)
- (i32.const -1)
+ (i32.const 2147483647)
+ )
+ (block
+ (local.set $1
+ (call $_sbrk
+ (local.get $2)
)
)
- (block
- (local.set $2
+ (if
+ (i32.eq
+ (i32.add
+ (i32.load
+ (local.get $4)
+ )
+ (i32.load
+ (local.get $3)
+ )
+ )
(local.get $1)
)
- (br $__rjti$5)
+ (br_if $__rjti$13
+ (i32.ne
+ (local.get $1)
+ (i32.const -1)
+ )
+ )
+ (block
+ (local.set $3
+ (local.get $1)
+ )
+ (br $__rjti$5)
+ )
)
)
)
+ (br $label$break$L279)
)
- (br $label$break$L279)
- )
- (if
- (i32.ne
- (local.tee $1
- (call $_sbrk
- (i32.const 0)
+ (if
+ (i32.ne
+ (local.tee $1
+ (call $_sbrk
+ (i32.const 0)
+ )
)
+ (i32.const -1)
)
- (i32.const -1)
- )
- (block
- (local.set $3
- (if (result i32)
- (i32.and
- (local.tee $3
- (local.get $1)
- )
- (local.tee $2
- (i32.add
- (local.tee $4
- (i32.load
- (i32.const 652)
+ (block
+ (local.set $2
+ (if (result i32)
+ (i32.and
+ (local.tee $2
+ (local.get $1)
+ )
+ (local.tee $3
+ (i32.add
+ (local.tee $4
+ (i32.load
+ (i32.const 652)
+ )
)
+ (i32.const -1)
)
- (i32.const -1)
)
)
- )
- (i32.add
- (i32.sub
- (local.get $6)
- (local.get $3)
- )
- (i32.and
- (i32.add
+ (i32.add
+ (i32.sub
+ (local.get $6)
(local.get $2)
- (local.get $3)
)
- (i32.sub
- (i32.const 0)
- (local.get $4)
+ (i32.and
+ (i32.add
+ (local.get $2)
+ (local.get $3)
+ )
+ (i32.sub
+ (i32.const 0)
+ (local.get $4)
+ )
)
)
+ (local.get $6)
)
- (local.get $6)
)
- )
- (local.set $12
- (i32.add
- (local.tee $4
- (i32.load
- (i32.const 608)
+ (local.set $10
+ (i32.add
+ (local.tee $4
+ (i32.load
+ (i32.const 608)
+ )
)
- )
- (local.get $3)
- )
- )
- (if
- (i32.and
- (i32.lt_u
- (local.get $3)
- (i32.const 2147483647)
- )
- (i32.gt_u
- (local.get $3)
- (local.get $0)
+ (local.get $2)
)
)
- (block
- (if
- (local.tee $2
- (i32.load
- (i32.const 616)
- )
+ (if
+ (i32.and
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 2147483647)
)
- (br_if $label$break$L279
- (i32.or
- (i32.le_u
- (local.get $12)
- (local.get $4)
+ (i32.gt_u
+ (local.get $2)
+ (local.get $0)
+ )
+ )
+ (block
+ (if
+ (local.tee $3
+ (i32.load
+ (i32.const 616)
)
- (i32.gt_u
- (local.get $12)
- (local.get $2)
+ )
+ (br_if $label$break$L279
+ (i32.or
+ (i32.le_u
+ (local.get $10)
+ (local.get $4)
+ )
+ (i32.gt_u
+ (local.get $10)
+ (local.get $3)
+ )
)
)
)
- )
- (br_if $__rjti$13
- (i32.eq
- (local.get $1)
- (local.tee $2
- (call $_sbrk
- (local.get $3)
+ (br_if $__rjti$13
+ (i32.eq
+ (local.get $1)
+ (local.tee $3
+ (call $_sbrk
+ (local.get $2)
+ )
)
)
)
+ (br $__rjti$5)
)
- (br $__rjti$5)
)
)
)
+ (br $label$break$L279)
)
- (br $label$break$L279)
- )
- (local.set $1
- (local.get $3)
- )
- (local.set $4
- (i32.sub
- (i32.const 0)
- (local.get $1)
+ (local.set $1
+ (local.get $2)
)
- )
- (local.set $3
- (if (result i32)
- (i32.and
+ (local.set $4
+ (i32.sub
+ (i32.const 0)
+ (local.get $1)
+ )
+ )
+ (local.set $2
+ (if (result i32)
(i32.and
- (i32.ne
- (local.get $2)
- (i32.const -1)
+ (i32.and
+ (i32.ne
+ (local.get $3)
+ (i32.const -1)
+ )
+ (i32.lt_u
+ (local.get $1)
+ (i32.const 2147483647)
+ )
)
- (i32.lt_u
+ (i32.gt_u
+ (local.get $12)
(local.get $1)
- (i32.const 2147483647)
)
)
- (i32.gt_u
- (local.get $10)
- (local.get $1)
- )
- )
- (if (result i32)
- (i32.lt_u
- (local.tee $3
- (i32.and
- (i32.add
- (local.tee $3
- (i32.load
- (i32.const 656)
+ (if (result i32)
+ (i32.lt_u
+ (local.tee $2
+ (i32.and
+ (i32.add
+ (local.tee $2
+ (i32.load
+ (i32.const 656)
+ )
+ )
+ (i32.sub
+ (local.get $8)
+ (local.get $1)
)
)
(i32.sub
- (local.get $9)
- (local.get $1)
+ (i32.const 0)
+ (local.get $2)
)
)
- (i32.sub
- (i32.const 0)
- (local.get $3)
- )
)
+ (i32.const 2147483647)
)
- (i32.const 2147483647)
- )
- (if (result i32)
- (i32.eq
- (call $_sbrk
- (local.get $3)
- )
- (i32.const -1)
- )
- (block
- (drop
+ (if (result i32)
+ (i32.eq
(call $_sbrk
- (local.get $4)
+ (local.get $2)
)
+ (i32.const -1)
+ )
+ (block
+ (drop
+ (call $_sbrk
+ (local.get $4)
+ )
+ )
+ (br $label$break$L279)
+ )
+ (i32.add
+ (local.get $1)
+ (local.get $2)
)
- (br $label$break$L279)
- )
- (i32.add
- (local.get $1)
- (local.get $3)
)
+ (local.get $1)
)
(local.get $1)
)
- (local.get $1)
)
- )
- (if
- (i32.ne
- (local.get $2)
- (i32.const -1)
- )
- (block
- (local.set $1
- (local.get $2)
+ (if
+ (i32.ne
+ (local.get $3)
+ (i32.const -1)
+ )
+ (block
+ (local.set $1
+ (local.get $3)
+ )
+ (br $__rjti$13)
)
- (br $__rjti$13)
)
)
- )
- (i32.store
- (i32.const 620)
- (i32.or
- (i32.load
- (i32.const 620)
+ (i32.store
+ (i32.const 620)
+ (i32.or
+ (i32.load
+ (i32.const 620)
+ )
+ (i32.const 4)
)
- (i32.const 4)
)
)
)
- )
- (if
- (i32.lt_u
- (local.get $6)
- (i32.const 2147483647)
- )
(if
- (i32.and
- (i32.lt_u
- (local.tee $1
- (call $_sbrk
- (local.get $6)
+ (i32.lt_u
+ (local.get $6)
+ (i32.const 2147483647)
+ )
+ (if
+ (i32.and
+ (i32.lt_u
+ (local.tee $1
+ (call $_sbrk
+ (local.get $6)
+ )
+ )
+ (local.tee $2
+ (call $_sbrk
+ (i32.const 0)
+ )
)
)
- (local.tee $3
- (call $_sbrk
- (i32.const 0)
+ (i32.and
+ (i32.ne
+ (local.get $1)
+ (i32.const -1)
+ )
+ (i32.ne
+ (local.get $2)
+ (i32.const -1)
)
)
)
- (i32.and
- (i32.ne
- (local.get $1)
- (i32.const -1)
- )
- (i32.ne
- (local.get $3)
- (i32.const -1)
+ (br_if $__rjti$13
+ (i32.gt_u
+ (local.tee $2
+ (i32.sub
+ (local.get $2)
+ (local.get $1)
+ )
+ )
+ (i32.add
+ (local.get $0)
+ (i32.const 40)
+ )
)
)
)
- (br_if $__rjti$13
- (i32.gt_u
- (local.tee $3
- (i32.sub
- (local.get $3)
- (local.get $1)
- )
- )
- (i32.add
- (local.get $0)
- (i32.const 40)
- )
+ )
+ (br $__rjto$13)
+ )
+ (i32.store
+ (i32.const 608)
+ (local.tee $3
+ (i32.add
+ (i32.load
+ (i32.const 608)
)
+ (local.get $2)
)
)
)
- (br $__rjto$13)
- )
- (i32.store
- (i32.const 608)
- (local.tee $2
- (i32.add
+ (if
+ (i32.gt_u
+ (local.get $3)
(i32.load
- (i32.const 608)
+ (i32.const 612)
)
- (local.get $3)
)
- )
- )
- (if
- (i32.gt_u
- (local.get $2)
- (i32.load
+ (i32.store
(i32.const 612)
+ (local.get $3)
)
)
- (i32.store
- (i32.const 612)
- (local.get $2)
- )
- )
- (if
- (local.tee $5
- (i32.load
- (i32.const 200)
- )
- )
- (block $do-once40
- (local.set $2
- (i32.const 624)
+ (if
+ (local.tee $5
+ (i32.load
+ (i32.const 200)
+ )
)
- (block $__rjto$10
- (block $__rjti$10
- (loop $while-in45
- (br_if $__rjti$10
- (i32.eq
- (i32.add
- (local.tee $10
- (i32.load
- (local.get $2)
+ (block $do-once40
+ (local.set $3
+ (i32.const 624)
+ )
+ (block $__rjto$10
+ (block $__rjti$10
+ (loop $while-in45
+ (br_if $__rjti$10
+ (i32.eq
+ (i32.add
+ (local.tee $12
+ (i32.load
+ (local.get $3)
+ )
)
- )
- (local.tee $6
- (i32.load
- (local.tee $4
- (i32.add
- (local.get $2)
- (i32.const 4)
+ (local.tee $6
+ (i32.load
+ (local.tee $4
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
)
)
)
)
+ (local.get $1)
)
- (local.get $1)
)
- )
- (br_if $while-in45
- (local.tee $2
- (i32.load offset=8
- (local.get $2)
+ (br_if $while-in45
+ (local.tee $3
+ (i32.load
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ )
)
)
)
- )
- (br $__rjto$10)
- )
- (if
- (i32.eqz
- (i32.and
- (i32.load offset=12
- (local.get $2)
- )
- (i32.const 8)
- )
+ (br $__rjto$10)
)
(if
- (i32.and
- (i32.lt_u
- (local.get $5)
- (local.get $1)
- )
- (i32.ge_u
- (local.get $5)
- (local.get $10)
- )
- )
- (block
- (i32.store
- (local.get $4)
- (i32.add
+ (i32.eqz
+ (i32.and
+ (i32.load offset=12
(local.get $3)
- (local.get $6)
)
+ (i32.const 8)
)
- (local.set $2
- (i32.add
+ )
+ (if
+ (i32.and
+ (i32.lt_u
(local.get $5)
- (local.tee $1
- (select
- (i32.and
- (i32.sub
- (i32.const 0)
- (local.tee $1
- (i32.add
- (local.get $5)
- (i32.const 8)
+ (local.get $1)
+ )
+ (i32.ge_u
+ (local.get $5)
+ (local.get $12)
+ )
+ )
+ (block
+ (i32.store
+ (local.get $4)
+ (i32.add
+ (local.get $2)
+ (local.get $6)
+ )
+ )
+ (local.set $3
+ (i32.add
+ (local.get $5)
+ (local.tee $1
+ (select
+ (i32.and
+ (i32.sub
+ (i32.const 0)
+ (local.tee $1
+ (i32.add
+ (local.get $5)
+ (i32.const 8)
+ )
)
)
+ (i32.const 7)
+ )
+ (i32.const 0)
+ (i32.and
+ (local.get $1)
+ (i32.const 7)
)
- (i32.const 7)
- )
- (i32.const 0)
- (i32.and
- (local.get $1)
- (i32.const 7)
)
)
)
)
- )
- (local.set $1
- (i32.add
- (i32.load
- (i32.const 188)
- )
- (i32.sub
- (local.get $3)
- (local.get $1)
+ (local.set $1
+ (i32.add
+ (i32.load
+ (i32.const 188)
+ )
+ (i32.sub
+ (local.get $2)
+ (local.get $1)
+ )
)
)
- )
- (i32.store
- (i32.const 200)
- (local.get $2)
- )
- (i32.store
- (i32.const 188)
- (local.get $1)
- )
- (i32.store offset=4
- (local.get $2)
- (i32.or
- (local.get $1)
- (i32.const 1)
+ (i32.store
+ (i32.const 200)
+ (local.get $3)
)
- )
- (i32.store offset=4
- (i32.add
+ (i32.store
+ (i32.const 188)
(local.get $1)
- (local.get $2)
)
- (i32.const 40)
- )
- (i32.store
- (i32.const 204)
- (i32.load
- (i32.const 664)
+ (i32.store offset=4
+ (local.get $3)
+ (i32.or
+ (local.get $1)
+ (i32.const 1)
+ )
+ )
+ (i32.store offset=4
+ (i32.add
+ (local.get $1)
+ (local.get $3)
+ )
+ (i32.const 40)
)
+ (i32.store
+ (i32.const 204)
+ (i32.load
+ (i32.const 664)
+ )
+ )
+ (br $do-once40)
)
- (br $do-once40)
)
)
)
- )
- (if
- (i32.lt_u
- (local.get $1)
- (local.tee $4
- (i32.load
+ (if
+ (i32.lt_u
+ (local.get $1)
+ (local.tee $4
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ )
+ (block
+ (i32.store
(i32.const 192)
+ (local.get $1)
+ )
+ (local.set $4
+ (local.get $1)
)
)
)
- (block
- (i32.store
- (i32.const 192)
- (local.get $1)
- )
- (local.set $4
+ (local.set $12
+ (i32.add
(local.get $1)
+ (local.get $2)
)
)
- )
- (local.set $10
- (i32.add
- (local.get $1)
- (local.get $3)
+ (local.set $3
+ (i32.const 624)
)
- )
- (local.set $2
- (i32.const 624)
- )
- (local.set $4
- (block $__rjto$11 (result i32)
- (block $__rjti$11
- (br $__rjto$11
- (loop $while-in47 (result i32)
- (if
- (i32.eq
- (i32.load
- (local.get $2)
+ (local.set $4
+ (block $__rjto$11 (result i32)
+ (block $__rjti$11
+ (br $__rjto$11
+ (loop $while-in47 (result i32)
+ (if
+ (i32.eq
+ (i32.load
+ (local.get $3)
+ )
+ (local.get $12)
)
- (local.get $10)
- )
- (block
- (local.set $6
- (local.get $2)
+ (block
+ (local.set $6
+ (local.get $3)
+ )
+ (br $__rjti$11)
)
- (br $__rjti$11)
)
- )
- (br_if $while-in47
- (local.tee $2
- (i32.load offset=8
- (local.get $2)
+ (br_if $while-in47
+ (local.tee $3
+ (i32.load
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ )
)
)
+ (i32.const 624)
)
- (i32.const 624)
- )
- )
- )
- (if (result i32)
- (i32.and
- (i32.load offset=12
- (local.get $2)
)
- (i32.const 8)
)
- (i32.const 624)
- (block
- (i32.store
- (local.get $6)
- (local.get $1)
- )
- (i32.store
- (local.tee $2
- (i32.add
- (local.get $2)
- (i32.const 4)
- )
- )
- (i32.add
- (i32.load
- (local.get $2)
- )
+ (if (result i32)
+ (i32.and
+ (i32.load offset=12
(local.get $3)
)
+ (i32.const 8)
)
- (local.set $9
- (i32.add
- (local.tee $12
- (i32.add
- (select
- (i32.and
- (i32.sub
- (i32.const 0)
- (local.tee $3
- (i32.add
- (local.get $1)
- (i32.const 8)
- )
- )
- )
- (i32.const 7)
- )
- (i32.const 0)
- (i32.and
- (local.get $3)
- (i32.const 7)
- )
- )
- (local.get $1)
+ (i32.const 624)
+ (block
+ (i32.store
+ (local.get $6)
+ (local.get $1)
+ )
+ (i32.store offset=4
+ (local.get $3)
+ (i32.add
+ (i32.load offset=4
+ (local.get $3)
)
+ (local.get $2)
)
- (local.get $0)
)
- )
- (local.set $7
- (i32.sub
- (i32.sub
- (local.tee $6
+ (local.set $8
+ (i32.add
+ (local.tee $10
(i32.add
- (local.get $10)
(select
(i32.and
(i32.sub
(i32.const 0)
- (local.tee $1
+ (local.tee $2
(i32.add
- (local.get $10)
+ (local.get $1)
(i32.const 8)
)
)
@@ -11037,1116 +10963,1146 @@
)
(i32.const 0)
(i32.and
- (local.get $1)
+ (local.get $2)
(i32.const 7)
)
)
+ (local.get $1)
)
)
- (local.get $12)
+ (local.get $0)
)
- (local.get $0)
- )
- )
- (i32.store offset=4
- (local.get $12)
- (i32.or
- (local.get $0)
- (i32.const 3)
- )
- )
- (if
- (i32.eq
- (local.get $5)
- (local.get $6)
)
- (block
- (i32.store
- (i32.const 188)
- (local.tee $0
- (i32.add
- (i32.load
- (i32.const 188)
+ (local.set $7
+ (i32.sub
+ (i32.sub
+ (local.tee $6
+ (i32.add
+ (local.get $12)
+ (select
+ (i32.and
+ (i32.sub
+ (i32.const 0)
+ (local.tee $1
+ (i32.add
+ (local.get $12)
+ (i32.const 8)
+ )
+ )
+ )
+ (i32.const 7)
+ )
+ (i32.const 0)
+ (i32.and
+ (local.get $1)
+ (i32.const 7)
+ )
+ )
)
- (local.get $7)
)
+ (local.get $10)
)
+ (local.get $0)
)
- (i32.store
- (i32.const 200)
- (local.get $9)
- )
- (i32.store offset=4
- (local.get $9)
- (i32.or
- (local.get $0)
- (i32.const 1)
- )
+ )
+ (i32.store offset=4
+ (local.get $10)
+ (i32.or
+ (local.get $0)
+ (i32.const 3)
)
)
- (block $do-once48
- (if
- (i32.eq
- (i32.load
- (i32.const 196)
- )
- (local.get $6)
- )
- (block
- (i32.store
- (i32.const 184)
- (local.tee $0
- (i32.add
- (i32.load
- (i32.const 184)
- )
- (local.get $7)
+ (if
+ (i32.eq
+ (local.get $5)
+ (local.get $6)
+ )
+ (block
+ (i32.store
+ (i32.const 188)
+ (local.tee $0
+ (i32.add
+ (i32.load
+ (i32.const 188)
)
+ (local.get $7)
)
)
- (i32.store
- (i32.const 196)
- (local.get $9)
- )
- (i32.store offset=4
- (local.get $9)
- (i32.or
- (local.get $0)
- (i32.const 1)
- )
- )
- (i32.store
- (i32.add
- (local.get $0)
- (local.get $9)
- )
+ )
+ (i32.store
+ (i32.const 200)
+ (local.get $8)
+ )
+ (i32.store offset=4
+ (local.get $8)
+ (i32.or
(local.get $0)
+ (i32.const 1)
)
- (br $do-once48)
)
)
- (i32.store
- (local.tee $0
- (i32.add
- (if (result i32)
- (i32.eq
- (i32.and
- (local.tee $0
- (i32.load offset=4
- (local.get $6)
- )
+ (block $do-once48
+ (if
+ (i32.eq
+ (i32.load
+ (i32.const 196)
+ )
+ (local.get $6)
+ )
+ (block
+ (i32.store
+ (i32.const 184)
+ (local.tee $0
+ (i32.add
+ (i32.load
+ (i32.const 184)
)
- (i32.const 3)
+ (local.get $7)
)
+ )
+ )
+ (i32.store
+ (i32.const 196)
+ (local.get $8)
+ )
+ (i32.store offset=4
+ (local.get $8)
+ (i32.or
+ (local.get $0)
(i32.const 1)
)
- (block (result i32)
- (local.set $10
+ )
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (local.get $8)
+ )
+ (local.get $0)
+ )
+ (br $do-once48)
+ )
+ )
+ (i32.store
+ (local.tee $0
+ (i32.add
+ (if (result i32)
+ (i32.eq
(i32.and
- (local.get $0)
- (i32.const -8)
- )
- )
- (local.set $1
- (i32.shr_u
- (local.get $0)
+ (local.tee $0
+ (i32.load offset=4
+ (local.get $6)
+ )
+ )
(i32.const 3)
)
+ (i32.const 1)
)
- (block $label$break$L331
- (if
- (i32.lt_u
+ (block (result i32)
+ (local.set $12
+ (i32.and
(local.get $0)
- (i32.const 256)
+ (i32.const -8)
)
- (block
- (local.set $2
- (i32.load offset=12
- (local.get $6)
- )
+ )
+ (local.set $1
+ (i32.shr_u
+ (local.get $0)
+ (i32.const 3)
+ )
+ )
+ (block $label$break$L331
+ (if
+ (i32.lt_u
+ (local.get $0)
+ (i32.const 256)
)
- (if
- (i32.ne
- (local.tee $3
- (i32.load offset=8
- (local.get $6)
- )
- )
- (local.tee $0
- (i32.add
- (i32.shl
- (local.get $1)
- (i32.const 3)
- )
- (i32.const 216)
- )
+ (block
+ (local.set $3
+ (i32.load offset=12
+ (local.get $6)
)
)
- (block $do-once51
- (if
- (i32.lt_u
- (local.get $3)
- (local.get $4)
+ (if
+ (i32.ne
+ (local.tee $2
+ (i32.load offset=8
+ (local.get $6)
+ )
)
- (call $_abort)
- )
- (br_if $do-once51
- (i32.eq
- (i32.load offset=12
- (local.get $3)
+ (local.tee $0
+ (i32.add
+ (i32.shl
+ (local.get $1)
+ (i32.const 3)
+ )
+ (i32.const 216)
)
- (local.get $6)
)
)
- (call $_abort)
- )
- )
- (if
- (i32.eq
- (local.get $2)
- (local.get $3)
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.and
- (i32.load
- (i32.const 176)
+ (block $do-once51
+ (if
+ (i32.lt_u
+ (local.get $2)
+ (local.get $4)
)
- (i32.xor
- (i32.shl
- (i32.const 1)
- (local.get $1)
+ (call $_abort)
+ )
+ (br_if $do-once51
+ (i32.eq
+ (i32.load offset=12
+ (local.get $2)
)
- (i32.const -1)
+ (local.get $6)
)
)
+ (call $_abort)
)
- (br $label$break$L331)
)
- )
- (if
- (i32.eq
- (local.get $0)
- (local.get $2)
- )
- (local.set $15
- (i32.add
+ (if
+ (i32.eq
(local.get $2)
- (i32.const 8)
+ (local.get $3)
+ )
+ (block
+ (i32.store
+ (i32.const 176)
+ (i32.and
+ (i32.load
+ (i32.const 176)
+ )
+ (i32.xor
+ (i32.shl
+ (i32.const 1)
+ (local.get $1)
+ )
+ (i32.const -1)
+ )
+ )
+ )
+ (br $label$break$L331)
)
)
- (block $do-once53
- (if
- (i32.lt_u
- (local.get $2)
- (local.get $4)
+ (if
+ (i32.eq
+ (local.get $0)
+ (local.get $3)
+ )
+ (local.set $15
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
)
- (call $_abort)
)
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $2)
- (i32.const 8)
- )
- )
+ (block $do-once53
+ (if
+ (i32.lt_u
+ (local.get $3)
+ (local.get $4)
)
- (local.get $6)
+ (call $_abort)
)
- (block
- (local.set $15
- (local.get $0)
+ (local.set $0
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
)
- (br $do-once53)
)
+ (if
+ (i32.eq
+ (i32.load offset=8
+ (local.get $3)
+ )
+ (local.get $6)
+ )
+ (block
+ (local.set $15
+ (local.get $0)
+ )
+ (br $do-once53)
+ )
+ )
+ (call $_abort)
)
- (call $_abort)
)
- )
- (i32.store offset=12
- (local.get $3)
- (local.get $2)
- )
- (i32.store
- (local.get $15)
- (local.get $3)
- )
- )
- (block
- (local.set $5
- (i32.load offset=24
- (local.get $6)
+ (i32.store offset=12
+ (local.get $2)
+ (local.get $3)
+ )
+ (i32.store
+ (local.get $15)
+ (local.get $2)
)
)
- (if
- (i32.eq
- (local.tee $0
- (i32.load offset=12
- (local.get $6)
- )
+ (block
+ (local.set $5
+ (i32.load offset=24
+ (local.get $6)
)
- (local.get $6)
)
- (block $do-once55
- (if
- (i32.eqz
- (local.tee $1
- (i32.load
- (local.tee $0
- (i32.add
- (local.tee $3
- (i32.add
- (local.get $6)
- (i32.const 16)
- )
- )
- (i32.const 4)
- )
- )
- )
+ (if
+ (i32.eq
+ (local.tee $0
+ (i32.load offset=12
+ (local.get $6)
)
)
- (block
- (br_if $do-once55
- (i32.eqz
- (local.tee $1
- (i32.load
- (local.get $3)
- )
+ (local.get $6)
+ )
+ (block $do-once55
+ (local.set $0
+ (i32.add
+ (local.tee $2
+ (i32.add
+ (local.get $6)
+ (i32.const 16)
)
)
- )
- (local.set $0
- (local.get $3)
+ (i32.const 4)
)
)
- )
- (loop $while-in58
(if
- (local.tee $3
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $1)
- (i32.const 20)
- )
+ (i32.eqz
+ (local.tee $1
+ (i32.load offset=4
+ (local.get $2)
)
)
)
(block
- (local.set $1
- (local.get $3)
+ (br_if $do-once55
+ (i32.eqz
+ (local.tee $1
+ (i32.load offset=16
+ (local.get $6)
+ )
+ )
+ )
)
(local.set $0
(local.get $2)
)
- (br $while-in58)
)
)
- (if
- (local.tee $3
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $1)
- (i32.const 16)
+ (loop $while-in58
+ (if
+ (local.tee $2
+ (i32.load
+ (local.tee $3
+ (i32.add
+ (local.get $1)
+ (i32.const 20)
+ )
)
)
)
+ (block
+ (local.set $1
+ (local.get $2)
+ )
+ (local.set $0
+ (local.get $3)
+ )
+ (br $while-in58)
+ )
)
- (block
- (local.set $1
- (local.get $3)
+ (if
+ (local.tee $2
+ (i32.load
+ (local.tee $3
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
+ )
+ )
)
- (local.set $0
- (local.get $2)
+ (block
+ (local.set $1
+ (local.get $2)
+ )
+ (local.set $0
+ (local.get $3)
+ )
+ (br $while-in58)
)
- (br $while-in58)
)
)
- )
- (if
- (i32.lt_u
- (local.get $0)
- (local.get $4)
- )
- (call $_abort)
- (block
- (i32.store
+ (if
+ (i32.lt_u
(local.get $0)
- (i32.const 0)
- )
- (local.set $8
- (local.get $1)
+ (local.get $4)
)
- )
- )
- )
- (block
- (if
- (i32.lt_u
- (local.tee $2
- (i32.load offset=8
- (local.get $6)
+ (call $_abort)
+ (block
+ (i32.store
+ (local.get $0)
+ (i32.const 0)
)
- )
- (local.get $4)
- )
- (call $_abort)
- )
- (if
- (i32.ne
- (local.get $6)
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $2)
- (i32.const 12)
- )
+ (local.set $11
+ (local.get $1)
)
)
)
- (call $_abort)
)
- (if
- (i32.eq
- (i32.load
+ (block
+ (if
+ (i32.lt_u
(local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 8)
+ (i32.load offset=8
+ (local.get $6)
)
)
+ (local.get $4)
)
- (local.get $6)
+ (call $_abort)
)
- (block
- (i32.store
- (local.get $3)
- (local.get $0)
+ (if
+ (i32.ne
+ (local.get $6)
+ (i32.load offset=12
+ (local.get $1)
+ )
)
- (i32.store
- (local.get $1)
- (local.get $2)
+ (call $_abort)
+ )
+ (if
+ (i32.eq
+ (i32.load offset=8
+ (local.get $0)
+ )
+ (local.get $6)
)
- (local.set $8
- (local.get $0)
+ (block
+ (i32.store offset=12
+ (local.get $1)
+ (local.get $0)
+ )
+ (i32.store offset=8
+ (local.get $0)
+ (local.get $1)
+ )
+ (local.set $11
+ (local.get $0)
+ )
)
+ (call $_abort)
)
- (call $_abort)
)
)
- )
- (br_if $label$break$L331
- (i32.eqz
- (local.get $5)
+ (br_if $label$break$L331
+ (i32.eqz
+ (local.get $5)
+ )
)
- )
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (i32.shl
- (local.tee $1
- (i32.load offset=28
- (local.get $6)
+ (if
+ (i32.eq
+ (i32.load
+ (local.tee $0
+ (i32.add
+ (i32.shl
+ (local.tee $1
+ (i32.load offset=28
+ (local.get $6)
+ )
)
+ (i32.const 2)
)
- (i32.const 2)
+ (i32.const 480)
)
- (i32.const 480)
)
)
+ (local.get $6)
)
- (local.get $6)
- )
- (block $do-once59
- (i32.store
- (local.get $0)
- (local.get $8)
- )
- (br_if $do-once59
- (local.get $8)
+ (block $do-once59
+ (i32.store
+ (local.get $0)
+ (local.get $11)
+ )
+ (br_if $do-once59
+ (local.get $11)
+ )
+ (i32.store
+ (i32.const 180)
+ (i32.and
+ (i32.load
+ (i32.const 180)
+ )
+ (i32.xor
+ (i32.shl
+ (i32.const 1)
+ (local.get $1)
+ )
+ (i32.const -1)
+ )
+ )
+ )
+ (br $label$break$L331)
)
- (i32.store
- (i32.const 180)
- (i32.and
- (i32.load
- (i32.const 180)
+ (block
+ (if
+ (i32.lt_u
+ (local.get $5)
+ (i32.load
+ (i32.const 192)
+ )
)
- (i32.xor
- (i32.shl
- (i32.const 1)
- (local.get $1)
+ (call $_abort)
+ )
+ (if
+ (i32.eq
+ (i32.load offset=16
+ (local.get $5)
)
- (i32.const -1)
+ (local.get $6)
+ )
+ (i32.store offset=16
+ (local.get $5)
+ (local.get $11)
+ )
+ (i32.store offset=20
+ (local.get $5)
+ (local.get $11)
+ )
+ )
+ (br_if $label$break$L331
+ (i32.eqz
+ (local.get $11)
)
)
)
- (br $label$break$L331)
)
- (block
- (if
- (i32.lt_u
- (local.get $5)
+ (if
+ (i32.lt_u
+ (local.get $11)
+ (local.tee $0
(i32.load
(i32.const 192)
)
)
- (call $_abort)
)
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $5)
- (i32.const 16)
- )
- )
- )
+ (call $_abort)
+ )
+ (i32.store
+ (i32.add
+ (local.get $11)
+ (i32.const 24)
+ )
+ (local.get $5)
+ )
+ (if
+ (local.tee $1
+ (i32.load offset=16
(local.get $6)
)
- (i32.store
- (local.get $0)
- (local.get $8)
- )
- (i32.store offset=20
- (local.get $5)
- (local.get $8)
- )
)
- (br_if $label$break$L331
- (i32.eqz
- (local.get $8)
+ (if
+ (i32.lt_u
+ (local.get $1)
+ (local.get $0)
)
- )
- )
- )
- (if
- (i32.lt_u
- (local.get $8)
- (local.tee $1
- (i32.load
- (i32.const 192)
+ (call $_abort)
+ (block
+ (i32.store
+ (i32.add
+ (local.get $11)
+ (i32.const 16)
+ )
+ (local.get $1)
+ )
+ (i32.store offset=24
+ (local.get $1)
+ (local.get $11)
+ )
)
)
)
- (call $_abort)
- )
- (i32.store offset=24
- (local.get $8)
- (local.get $5)
- )
- (if
- (local.tee $3
- (i32.load
+ (br_if $label$break$L331
+ (i32.eqz
(local.tee $0
- (i32.add
- (local.get $6)
- (i32.const 16)
+ (i32.load offset=4
+ (i32.add
+ (local.get $6)
+ (i32.const 16)
+ )
)
)
)
)
(if
(i32.lt_u
- (local.get $3)
- (local.get $1)
+ (local.get $0)
+ (i32.load
+ (i32.const 192)
+ )
)
(call $_abort)
(block
- (i32.store offset=16
- (local.get $8)
- (local.get $3)
+ (i32.store
+ (i32.add
+ (local.get $11)
+ (i32.const 20)
+ )
+ (local.get $0)
)
(i32.store offset=24
- (local.get $3)
- (local.get $8)
- )
- )
- )
- )
- (br_if $label$break$L331
- (i32.eqz
- (local.tee $0
- (i32.load offset=4
(local.get $0)
+ (local.get $11)
)
)
)
)
- (if
- (i32.lt_u
- (local.get $0)
- (i32.load
- (i32.const 192)
- )
- )
- (call $_abort)
- (block
- (i32.store offset=20
- (local.get $8)
- (local.get $0)
- )
- (i32.store offset=24
- (local.get $0)
- (local.get $8)
- )
- )
- )
)
)
- )
- (local.set $7
+ (local.set $7
+ (i32.add
+ (local.get $7)
+ (local.get $12)
+ )
+ )
(i32.add
- (local.get $7)
- (local.get $10)
+ (local.get $6)
+ (local.get $12)
)
)
- (i32.add
- (local.get $6)
- (local.get $10)
- )
+ (local.get $6)
)
- (local.get $6)
+ (i32.const 4)
)
- (i32.const 4)
)
- )
- (i32.and
- (i32.load
- (local.get $0)
+ (i32.and
+ (i32.load
+ (local.get $0)
+ )
+ (i32.const -2)
)
- (i32.const -2)
- )
- )
- (i32.store offset=4
- (local.get $9)
- (i32.or
- (local.get $7)
- (i32.const 1)
)
- )
- (i32.store
- (i32.add
- (local.get $7)
- (local.get $9)
+ (i32.store offset=4
+ (local.get $8)
+ (i32.or
+ (local.get $7)
+ (i32.const 1)
+ )
)
- (local.get $7)
- )
- (local.set $0
- (i32.shr_u
+ (i32.store
+ (i32.add
+ (local.get $7)
+ (local.get $8)
+ )
(local.get $7)
- (i32.const 3)
)
- )
- (if
- (i32.lt_u
- (local.get $7)
- (i32.const 256)
+ (local.set $0
+ (i32.shr_u
+ (local.get $7)
+ (i32.const 3)
+ )
)
- (block
- (local.set $3
- (i32.add
- (i32.shl
- (local.get $0)
- (i32.const 3)
- )
- (i32.const 216)
- )
+ (if
+ (i32.lt_u
+ (local.get $7)
+ (i32.const 256)
)
- (if
- (i32.and
- (local.tee $1
- (i32.load
- (i32.const 176)
- )
- )
- (local.tee $0
+ (block
+ (local.set $2
+ (i32.add
(i32.shl
- (i32.const 1)
(local.get $0)
+ (i32.const 3)
)
+ (i32.const 216)
)
)
- (block $do-once63
- (if
- (i32.ge_u
- (local.tee $0
- (i32.load
- (local.tee $1
- (i32.add
- (local.get $3)
- (i32.const 8)
- )
- )
- )
- )
+ (if
+ (i32.and
+ (local.tee $1
(i32.load
- (i32.const 192)
+ (i32.const 176)
)
)
- (block
- (local.set $16
- (local.get $1)
- )
- (local.set $11
+ (local.tee $0
+ (i32.shl
+ (i32.const 1)
(local.get $0)
)
- (br $do-once63)
)
)
- (call $_abort)
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.or
- (local.get $0)
- (local.get $1)
+ (block $do-once63
+ (local.set $1
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ )
+ (if
+ (i32.ge_u
+ (local.tee $0
+ (i32.load offset=8
+ (local.get $2)
+ )
+ )
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ (block
+ (local.set $16
+ (local.get $1)
+ )
+ (local.set $9
+ (local.get $0)
+ )
+ (br $do-once63)
+ )
)
+ (call $_abort)
)
- (local.set $16
- (i32.add
- (local.get $3)
- (i32.const 8)
+ (block
+ (i32.store
+ (i32.const 176)
+ (i32.or
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (local.set $16
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ )
+ (local.set $9
+ (local.get $2)
)
)
- (local.set $11
- (local.get $3)
+ )
+ (i32.store
+ (local.get $16)
+ (local.get $8)
+ )
+ (i32.store
+ (i32.add
+ (local.get $9)
+ (i32.const 12)
)
+ (local.get $8)
)
+ (i32.store offset=8
+ (local.get $8)
+ (local.get $9)
+ )
+ (i32.store offset=12
+ (local.get $8)
+ (local.get $2)
+ )
+ (br $do-once48)
)
- (i32.store
- (local.get $16)
- (local.get $9)
- )
- (i32.store offset=12
- (local.get $11)
- (local.get $9)
- )
- (i32.store offset=8
- (local.get $9)
- (local.get $11)
- )
- (i32.store offset=12
- (local.get $9)
- (local.get $3)
- )
- (br $do-once48)
)
- )
- (local.set $3
- (i32.add
- (i32.shl
- (local.tee $2
- (if (result i32)
- (local.tee $0
- (i32.shr_u
- (local.get $7)
- (i32.const 8)
- )
- )
+ (local.set $2
+ (i32.add
+ (i32.shl
+ (local.tee $3
(if (result i32)
- (i32.gt_u
- (local.get $7)
- (i32.const 16777215)
+ (local.tee $0
+ (i32.shr_u
+ (local.get $7)
+ (i32.const 8)
+ )
)
- (i32.const 31)
- (block (result i32)
- (local.set $2
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $0
- (i32.shl
- (local.get $0)
- (local.tee $1
- (i32.and
- (i32.shr_u
- (i32.add
- (local.get $0)
- (i32.const 1048320)
+ (if (result i32)
+ (i32.gt_u
+ (local.get $7)
+ (i32.const 16777215)
+ )
+ (i32.const 31)
+ (block (result i32)
+ (local.set $3
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (local.tee $1
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.get $0)
+ (i32.const 1048320)
+ )
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 8)
)
- (i32.const 8)
)
)
)
+ (i32.const 520192)
)
- (i32.const 520192)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 4)
)
- (i32.const 4)
)
- )
- (local.set $3
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $0
- (i32.shl
- (local.get $0)
- (local.get $2)
+ (local.set $2
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (local.get $3)
+ )
)
+ (i32.const 245760)
)
- (i32.const 245760)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 2)
)
- (i32.const 2)
)
- )
- (i32.or
- (i32.and
- (i32.shr_u
- (local.get $7)
- (i32.add
- (local.tee $0
- (i32.add
- (i32.sub
- (i32.const 14)
- (i32.or
+ (i32.or
+ (i32.and
+ (i32.shr_u
+ (local.get $7)
+ (i32.add
+ (local.tee $0
+ (i32.add
+ (i32.sub
+ (i32.const 14)
(i32.or
- (local.get $1)
+ (i32.or
+ (local.get $1)
+ (local.get $3)
+ )
(local.get $2)
)
- (local.get $3)
)
- )
- (i32.shr_u
- (i32.shl
- (local.get $0)
- (local.get $3)
+ (i32.shr_u
+ (i32.shl
+ (local.get $0)
+ (local.get $2)
+ )
+ (i32.const 15)
)
- (i32.const 15)
)
)
+ (i32.const 7)
)
- (i32.const 7)
)
+ (i32.const 1)
+ )
+ (i32.shl
+ (local.get $0)
+ (i32.const 1)
)
- (i32.const 1)
- )
- (i32.shl
- (local.get $0)
- (i32.const 1)
)
)
)
+ (i32.const 0)
)
- (i32.const 0)
)
+ (i32.const 2)
)
- (i32.const 2)
+ (i32.const 480)
)
- (i32.const 480)
)
- )
- (i32.store offset=28
- (local.get $9)
- (local.get $2)
- )
- (i32.store offset=4
- (local.tee $0
+ (i32.store offset=28
+ (local.get $8)
+ (local.get $3)
+ )
+ (i32.store offset=4
(i32.add
- (local.get $9)
+ (local.get $8)
(i32.const 16)
)
+ (i32.const 0)
)
- (i32.const 0)
- )
- (i32.store
- (local.get $0)
- (i32.const 0)
- )
- (if
- (i32.eqz
- (i32.and
- (local.tee $1
- (i32.load
- (i32.const 180)
+ (i32.store offset=16
+ (local.get $8)
+ (i32.const 0)
+ )
+ (if
+ (i32.eqz
+ (i32.and
+ (local.tee $1
+ (i32.load
+ (i32.const 180)
+ )
)
- )
- (local.tee $0
- (i32.shl
- (i32.const 1)
- (local.get $2)
+ (local.tee $0
+ (i32.shl
+ (i32.const 1)
+ (local.get $3)
+ )
)
)
)
- )
- (block
- (i32.store
- (i32.const 180)
- (i32.or
- (local.get $0)
- (local.get $1)
- )
- )
- (i32.store
- (local.get $3)
- (local.get $9)
- )
- (i32.store offset=24
- (local.get $9)
- (local.get $3)
- )
- (i32.store offset=12
- (local.get $9)
- (local.get $9)
- )
- (i32.store offset=8
- (local.get $9)
- (local.get $9)
- )
- (br $do-once48)
- )
- )
- (local.set $2
- (i32.shl
- (local.get $7)
- (select
- (i32.const 0)
- (i32.sub
- (i32.const 25)
- (i32.shr_u
- (local.get $2)
- (i32.const 1)
+ (block
+ (i32.store
+ (i32.const 180)
+ (i32.or
+ (local.get $0)
+ (local.get $1)
)
)
- (i32.eq
+ (i32.store
+ (local.get $2)
+ (local.get $8)
+ )
+ (i32.store offset=24
+ (local.get $8)
(local.get $2)
- (i32.const 31)
)
+ (i32.store offset=12
+ (local.get $8)
+ (local.get $8)
+ )
+ (i32.store offset=8
+ (local.get $8)
+ (local.get $8)
+ )
+ (br $do-once48)
)
)
- )
- (local.set $0
- (i32.load
- (local.get $3)
- )
- )
- (block $__rjto$7
- (block $__rjti$7
- (loop $while-in68
- (br_if $__rjti$7
- (i32.eq
- (i32.and
- (i32.load offset=4
- (local.get $0)
- )
- (i32.const -8)
+ (local.set $3
+ (i32.shl
+ (local.get $7)
+ (select
+ (i32.const 0)
+ (i32.sub
+ (i32.const 25)
+ (i32.shr_u
+ (local.get $3)
+ (i32.const 1)
)
- (local.get $7)
)
- )
- (local.set $3
- (i32.shl
- (local.get $2)
- (i32.const 1)
+ (i32.eq
+ (local.get $3)
+ (i32.const 31)
)
)
- (if
- (local.tee $1
- (i32.load
- (local.tee $2
- (i32.add
+ )
+ )
+ (local.set $0
+ (i32.load
+ (local.get $2)
+ )
+ )
+ (block $__rjto$7
+ (block $__rjti$7
+ (loop $while-in68
+ (br_if $__rjti$7
+ (i32.eq
+ (i32.and
+ (i32.load
(i32.add
(local.get $0)
- (i32.const 16)
+ (i32.const 4)
)
- (i32.shl
- (i32.shr_u
- (local.get $2)
- (i32.const 31)
+ )
+ (i32.const -8)
+ )
+ (local.get $7)
+ )
+ )
+ (local.set $2
+ (i32.shl
+ (local.get $3)
+ (i32.const 1)
+ )
+ )
+ (if
+ (local.tee $1
+ (i32.load
+ (local.tee $3
+ (i32.add
+ (i32.add
+ (local.get $0)
+ (i32.const 16)
+ )
+ (i32.shl
+ (i32.shr_u
+ (local.get $3)
+ (i32.const 31)
+ )
+ (i32.const 2)
)
- (i32.const 2)
)
)
)
)
+ (block
+ (local.set $3
+ (local.get $2)
+ )
+ (local.set $0
+ (local.get $1)
+ )
+ (br $while-in68)
+ )
+ )
+ )
+ (if
+ (i32.lt_u
+ (local.get $3)
+ (i32.load
+ (i32.const 192)
+ )
)
+ (call $_abort)
(block
- (local.set $2
+ (i32.store
(local.get $3)
+ (local.get $8)
)
- (local.set $0
- (local.get $1)
+ (i32.store offset=24
+ (local.get $8)
+ (local.get $0)
)
- (br $while-in68)
+ (i32.store offset=12
+ (local.get $8)
+ (local.get $8)
+ )
+ (i32.store offset=8
+ (local.get $8)
+ (local.get $8)
+ )
+ (br $do-once48)
)
)
+ (br $__rjto$7)
)
(if
- (i32.lt_u
- (local.get $2)
- (i32.load
- (i32.const 192)
+ (i32.and
+ (i32.ge_u
+ (local.tee $2
+ (i32.load offset=8
+ (local.get $0)
+ )
+ )
+ (local.tee $1
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ )
+ (i32.ge_u
+ (local.get $0)
+ (local.get $1)
)
)
- (call $_abort)
(block
- (i32.store
+ (i32.store offset=12
(local.get $2)
- (local.get $9)
+ (local.get $8)
)
- (i32.store offset=24
- (local.get $9)
+ (i32.store offset=8
(local.get $0)
- )
- (i32.store offset=12
- (local.get $9)
- (local.get $9)
+ (local.get $8)
)
(i32.store offset=8
- (local.get $9)
- (local.get $9)
+ (local.get $8)
+ (local.get $2)
)
- (br $do-once48)
- )
- )
- (br $__rjto$7)
- )
- (if
- (i32.and
- (i32.ge_u
- (local.tee $2
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
- )
+ (i32.store offset=12
+ (local.get $8)
+ (local.get $0)
)
- (local.tee $1
- (i32.load
- (i32.const 192)
- )
+ (i32.store offset=24
+ (local.get $8)
+ (i32.const 0)
)
)
- (i32.ge_u
- (local.get $0)
- (local.get $1)
- )
- )
- (block
- (i32.store offset=12
- (local.get $2)
- (local.get $9)
- )
- (i32.store
- (local.get $3)
- (local.get $9)
- )
- (i32.store offset=8
- (local.get $9)
- (local.get $2)
- )
- (i32.store offset=12
- (local.get $9)
- (local.get $0)
- )
- (i32.store offset=24
- (local.get $9)
- (i32.const 0)
- )
+ (call $_abort)
)
- (call $_abort)
)
)
)
- )
- (return
- (i32.add
- (local.get $12)
- (i32.const 8)
+ (return
+ (i32.add
+ (local.get $10)
+ (i32.const 8)
+ )
)
)
)
)
)
- )
- (loop $while-in70
- (block $while-out69
- (if
- (i32.le_u
- (local.tee $2
- (i32.load
- (local.get $4)
+ (loop $while-in70
+ (block $while-out69
+ (if
+ (i32.le_u
+ (local.tee $3
+ (i32.load
+ (local.get $4)
+ )
)
+ (local.get $5)
)
- (local.get $5)
- )
- (br_if $while-out69
- (i32.gt_u
- (local.tee $2
- (i32.add
- (local.get $2)
- (i32.load offset=4
- (local.get $4)
+ (br_if $while-out69
+ (i32.gt_u
+ (local.tee $3
+ (i32.add
+ (local.get $3)
+ (i32.load
+ (i32.add
+ (local.get $4)
+ (i32.const 4)
+ )
+ )
)
)
+ (local.get $5)
)
- (local.get $5)
)
)
- )
- (local.set $4
- (i32.load offset=8
- (local.get $4)
+ (local.set $4
+ (i32.load
+ (i32.add
+ (local.get $4)
+ (i32.const 8)
+ )
+ )
)
+ (br $while-in70)
)
- (br $while-in70)
)
- )
- (local.set $11
- (i32.add
- (local.tee $4
- (i32.add
- (local.get $2)
- (i32.const -47)
+ (local.set $9
+ (i32.add
+ (local.tee $4
+ (i32.add
+ (local.get $3)
+ (i32.const -47)
+ )
)
+ (i32.const 8)
)
- (i32.const 8)
)
- )
- (local.set $8
- (i32.add
- (local.tee $10
- (select
- (local.get $5)
- (local.tee $4
- (i32.add
- (local.get $4)
- (select
- (i32.and
- (i32.sub
- (i32.const 0)
- (local.get $11)
+ (local.set $6
+ (i32.add
+ (local.tee $11
+ (select
+ (local.get $5)
+ (local.tee $4
+ (i32.add
+ (local.get $4)
+ (select
+ (i32.and
+ (i32.sub
+ (i32.const 0)
+ (local.get $9)
+ )
+ (i32.const 7)
+ )
+ (i32.const 0)
+ (i32.and
+ (local.get $9)
+ (i32.const 7)
)
- (i32.const 7)
- )
- (i32.const 0)
- (i32.and
- (local.get $11)
- (i32.const 7)
)
)
)
- )
- (i32.lt_u
- (local.get $4)
- (local.tee $11
+ (i32.lt_u
+ (local.get $4)
(i32.add
(local.get $5)
(i32.const 16)
@@ -12154,791 +12110,790 @@
)
)
)
+ (i32.const 8)
)
- (i32.const 8)
)
- )
- (i32.store
- (i32.const 200)
- (local.tee $6
- (i32.add
- (local.tee $4
- (select
- (i32.and
- (i32.sub
- (i32.const 0)
- (local.tee $4
- (i32.add
- (local.get $1)
- (i32.const 8)
+ (i32.store
+ (i32.const 200)
+ (local.tee $9
+ (i32.add
+ (local.tee $4
+ (select
+ (i32.and
+ (i32.sub
+ (i32.const 0)
+ (local.tee $4
+ (i32.add
+ (local.get $1)
+ (i32.const 8)
+ )
)
)
+ (i32.const 7)
+ )
+ (i32.const 0)
+ (i32.and
+ (local.get $4)
+ (i32.const 7)
)
- (i32.const 7)
- )
- (i32.const 0)
- (i32.and
- (local.get $4)
- (i32.const 7)
)
)
+ (local.get $1)
)
- (local.get $1)
)
)
- )
- (i32.store
- (i32.const 188)
- (local.tee $4
- (i32.sub
- (i32.add
- (local.get $3)
- (i32.const -40)
+ (i32.store
+ (i32.const 188)
+ (local.tee $4
+ (i32.sub
+ (i32.add
+ (local.get $2)
+ (i32.const -40)
+ )
+ (local.get $4)
)
+ )
+ )
+ (i32.store offset=4
+ (local.get $9)
+ (i32.or
+ (local.get $4)
+ (i32.const 1)
+ )
+ )
+ (i32.store offset=4
+ (i32.add
(local.get $4)
+ (local.get $9)
)
+ (i32.const 40)
)
- )
- (i32.store offset=4
- (local.get $6)
- (i32.or
- (local.get $4)
- (i32.const 1)
+ (i32.store
+ (i32.const 204)
+ (i32.load
+ (i32.const 664)
+ )
)
- )
- (i32.store offset=4
- (i32.add
- (local.get $4)
+ (i32.store offset=4
+ (local.get $11)
+ (i32.const 27)
+ )
+ (i32.store offset=8
+ (local.get $11)
+ (i32.load
+ (i32.const 624)
+ )
+ )
+ (i32.store offset=4
(local.get $6)
+ (i32.load
+ (i32.const 628)
+ )
)
- (i32.const 40)
- )
- (i32.store
- (i32.const 204)
- (i32.load
- (i32.const 664)
+ (i32.store offset=8
+ (local.get $6)
+ (i32.load
+ (i32.const 632)
+ )
)
- )
- (i32.store
- (local.tee $4
- (i32.add
- (local.get $10)
- (i32.const 4)
+ (i32.store offset=12
+ (local.get $6)
+ (i32.load
+ (i32.const 636)
)
)
- (i32.const 27)
- )
- (i32.store
- (local.get $8)
- (i32.load
+ (i32.store
(i32.const 624)
+ (local.get $1)
)
- )
- (i32.store offset=4
- (local.get $8)
- (i32.load
+ (i32.store
(i32.const 628)
+ (local.get $2)
)
- )
- (i32.store offset=8
- (local.get $8)
- (i32.load
- (i32.const 632)
- )
- )
- (i32.store offset=12
- (local.get $8)
- (i32.load
+ (i32.store
(i32.const 636)
+ (i32.const 0)
)
- )
- (i32.store
- (i32.const 624)
- (local.get $1)
- )
- (i32.store
- (i32.const 628)
- (local.get $3)
- )
- (i32.store
- (i32.const 636)
- (i32.const 0)
- )
- (i32.store
- (i32.const 632)
- (local.get $8)
- )
- (local.set $1
- (i32.add
- (local.get $10)
- (i32.const 24)
- )
- )
- (loop $while-in72
(i32.store
- (local.tee $1
- (i32.add
- (local.get $1)
- (i32.const 4)
- )
- )
- (i32.const 7)
+ (i32.const 632)
+ (local.get $6)
)
- (br_if $while-in72
- (i32.lt_u
- (i32.add
- (local.get $1)
- (i32.const 4)
- )
- (local.get $2)
+ (local.set $1
+ (i32.add
+ (local.get $11)
+ (i32.const 24)
)
)
- )
- (if
- (i32.ne
- (local.get $5)
- (local.get $10)
- )
- (block
+ (loop $while-in72
(i32.store
- (local.get $4)
- (i32.and
- (i32.load
- (local.get $4)
+ (local.tee $1
+ (i32.add
+ (local.get $1)
+ (i32.const 4)
)
- (i32.const -2)
)
+ (i32.const 7)
)
- (i32.store offset=4
- (local.get $5)
- (i32.or
- (local.tee $6
- (i32.sub
- (local.get $10)
- (local.get $5)
- )
+ (br_if $while-in72
+ (i32.lt_u
+ (i32.add
+ (local.get $1)
+ (i32.const 4)
)
- (i32.const 1)
+ (local.get $3)
)
)
- (i32.store
- (local.get $10)
- (local.get $6)
- )
- (local.set $1
- (i32.shr_u
- (local.get $6)
- (i32.const 3)
- )
+ )
+ (if
+ (i32.ne
+ (local.get $5)
+ (local.get $11)
)
- (if
- (i32.lt_u
- (local.get $6)
- (i32.const 256)
+ (block
+ (i32.store offset=4
+ (local.get $11)
+ (i32.and
+ (i32.load offset=4
+ (local.get $11)
+ )
+ (i32.const -2)
+ )
)
- (block
- (local.set $2
- (i32.add
- (i32.shl
- (local.get $1)
- (i32.const 3)
+ (i32.store offset=4
+ (local.get $5)
+ (i32.or
+ (local.tee $9
+ (i32.sub
+ (local.get $11)
+ (local.get $5)
)
- (i32.const 216)
)
+ (i32.const 1)
)
- (if
- (i32.and
- (local.tee $3
- (i32.load
- (i32.const 176)
- )
- )
- (local.tee $1
+ )
+ (i32.store
+ (local.get $11)
+ (local.get $9)
+ )
+ (local.set $1
+ (i32.shr_u
+ (local.get $9)
+ (i32.const 3)
+ )
+ )
+ (if
+ (i32.lt_u
+ (local.get $9)
+ (i32.const 256)
+ )
+ (block
+ (local.set $3
+ (i32.add
(i32.shl
- (i32.const 1)
(local.get $1)
+ (i32.const 3)
)
+ (i32.const 216)
)
)
(if
- (i32.lt_u
- (local.tee $1
+ (i32.and
+ (local.tee $2
(i32.load
- (local.tee $3
- (i32.add
- (local.get $2)
- (i32.const 8)
+ (i32.const 176)
+ )
+ )
+ (local.tee $1
+ (i32.shl
+ (i32.const 1)
+ (local.get $1)
+ )
+ )
+ )
+ (block
+ (local.set $2
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ )
+ (if
+ (i32.lt_u
+ (local.tee $1
+ (i32.load offset=8
+ (local.get $3)
)
)
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ (call $_abort)
+ (block
+ (local.set $17
+ (local.get $2)
+ )
+ (local.set $7
+ (local.get $1)
+ )
)
- )
- (i32.load
- (i32.const 192)
)
)
- (call $_abort)
(block
+ (i32.store
+ (i32.const 176)
+ (i32.or
+ (local.get $1)
+ (local.get $2)
+ )
+ )
(local.set $17
- (local.get $3)
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
)
(local.set $7
- (local.get $1)
- )
- )
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.or
- (local.get $1)
(local.get $3)
)
)
- (local.set $17
- (i32.add
- (local.get $2)
- (i32.const 8)
- )
- )
- (local.set $7
- (local.get $2)
+ )
+ (i32.store
+ (local.get $17)
+ (local.get $5)
+ )
+ (i32.store
+ (i32.add
+ (local.get $7)
+ (i32.const 12)
)
+ (local.get $5)
)
+ (i32.store offset=8
+ (local.get $5)
+ (local.get $7)
+ )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $3)
+ )
+ (br $do-once40)
)
- (i32.store
- (local.get $17)
- (local.get $5)
- )
- (i32.store offset=12
- (local.get $7)
- (local.get $5)
- )
- (i32.store offset=8
- (local.get $5)
- (local.get $7)
- )
- (i32.store offset=12
- (local.get $5)
- (local.get $2)
- )
- (br $do-once40)
)
- )
- (local.set $2
- (i32.add
- (i32.shl
- (local.tee $4
- (if (result i32)
- (local.tee $1
- (i32.shr_u
- (local.get $6)
- (i32.const 8)
- )
- )
+ (local.set $3
+ (i32.add
+ (i32.shl
+ (local.tee $4
(if (result i32)
- (i32.gt_u
- (local.get $6)
- (i32.const 16777215)
+ (local.tee $1
+ (i32.shr_u
+ (local.get $9)
+ (i32.const 8)
+ )
)
- (i32.const 31)
- (block (result i32)
- (local.set $4
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $1
- (i32.shl
- (local.get $1)
- (local.tee $3
- (i32.and
- (i32.shr_u
- (i32.add
- (local.get $1)
- (i32.const 1048320)
+ (if (result i32)
+ (i32.gt_u
+ (local.get $9)
+ (i32.const 16777215)
+ )
+ (i32.const 31)
+ (block (result i32)
+ (local.set $4
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $1
+ (i32.shl
+ (local.get $1)
+ (local.tee $2
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.get $1)
+ (i32.const 1048320)
+ )
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 8)
)
- (i32.const 8)
)
)
)
+ (i32.const 520192)
)
- (i32.const 520192)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 4)
)
- (i32.const 4)
)
- )
- (local.set $2
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $1
- (i32.shl
- (local.get $1)
- (local.get $4)
+ (local.set $3
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $1
+ (i32.shl
+ (local.get $1)
+ (local.get $4)
+ )
)
+ (i32.const 245760)
)
- (i32.const 245760)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 2)
)
- (i32.const 2)
)
- )
- (i32.or
- (i32.and
- (i32.shr_u
- (local.get $6)
- (i32.add
- (local.tee $1
- (i32.add
- (i32.sub
- (i32.const 14)
- (i32.or
+ (i32.or
+ (i32.and
+ (i32.shr_u
+ (local.get $9)
+ (i32.add
+ (local.tee $1
+ (i32.add
+ (i32.sub
+ (i32.const 14)
(i32.or
+ (i32.or
+ (local.get $2)
+ (local.get $4)
+ )
(local.get $3)
- (local.get $4)
)
- (local.get $2)
)
- )
- (i32.shr_u
- (i32.shl
- (local.get $1)
- (local.get $2)
+ (i32.shr_u
+ (i32.shl
+ (local.get $1)
+ (local.get $3)
+ )
+ (i32.const 15)
)
- (i32.const 15)
)
)
+ (i32.const 7)
)
- (i32.const 7)
)
+ (i32.const 1)
+ )
+ (i32.shl
+ (local.get $1)
+ (i32.const 1)
)
- (i32.const 1)
- )
- (i32.shl
- (local.get $1)
- (i32.const 1)
)
)
)
+ (i32.const 0)
)
- (i32.const 0)
)
+ (i32.const 2)
)
- (i32.const 2)
+ (i32.const 480)
)
- (i32.const 480)
)
- )
- (i32.store offset=28
- (local.get $5)
- (local.get $4)
- )
- (i32.store offset=20
- (local.get $5)
- (i32.const 0)
- )
- (i32.store
- (local.get $11)
- (i32.const 0)
- )
- (if
- (i32.eqz
- (i32.and
- (local.tee $3
- (i32.load
- (i32.const 180)
+ (i32.store offset=28
+ (local.get $5)
+ (local.get $4)
+ )
+ (i32.store offset=20
+ (local.get $5)
+ (i32.const 0)
+ )
+ (i32.store offset=16
+ (local.get $5)
+ (i32.const 0)
+ )
+ (if
+ (i32.eqz
+ (i32.and
+ (local.tee $2
+ (i32.load
+ (i32.const 180)
+ )
)
- )
- (local.tee $1
- (i32.shl
- (i32.const 1)
- (local.get $4)
+ (local.tee $1
+ (i32.shl
+ (i32.const 1)
+ (local.get $4)
+ )
)
)
)
- )
- (block
- (i32.store
- (i32.const 180)
- (i32.or
- (local.get $1)
+ (block
+ (i32.store
+ (i32.const 180)
+ (i32.or
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+ (i32.store
(local.get $3)
+ (local.get $5)
)
+ (i32.store offset=24
+ (local.get $5)
+ (local.get $3)
+ )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $5)
+ )
+ (i32.store offset=8
+ (local.get $5)
+ (local.get $5)
+ )
+ (br $do-once40)
)
- (i32.store
- (local.get $2)
- (local.get $5)
- )
- (i32.store offset=24
- (local.get $5)
- (local.get $2)
- )
- (i32.store offset=12
- (local.get $5)
- (local.get $5)
- )
- (i32.store offset=8
- (local.get $5)
- (local.get $5)
- )
- (br $do-once40)
)
- )
- (local.set $4
- (i32.shl
- (local.get $6)
- (select
- (i32.const 0)
- (i32.sub
- (i32.const 25)
- (i32.shr_u
+ (local.set $4
+ (i32.shl
+ (local.get $9)
+ (select
+ (i32.const 0)
+ (i32.sub
+ (i32.const 25)
+ (i32.shr_u
+ (local.get $4)
+ (i32.const 1)
+ )
+ )
+ (i32.eq
(local.get $4)
- (i32.const 1)
+ (i32.const 31)
)
)
- (i32.eq
- (local.get $4)
- (i32.const 31)
- )
)
)
- )
- (local.set $1
- (i32.load
- (local.get $2)
+ (local.set $1
+ (i32.load
+ (local.get $3)
+ )
)
- )
- (block $__rjto$9
- (block $__rjti$9
- (loop $while-in74
- (br_if $__rjti$9
- (i32.eq
- (i32.and
- (i32.load offset=4
- (local.get $1)
+ (block $__rjto$9
+ (block $__rjti$9
+ (loop $while-in74
+ (br_if $__rjti$9
+ (i32.eq
+ (i32.and
+ (i32.load
+ (i32.add
+ (local.get $1)
+ (i32.const 4)
+ )
+ )
+ (i32.const -8)
)
- (i32.const -8)
+ (local.get $9)
)
- (local.get $6)
)
- )
- (local.set $2
- (i32.shl
- (local.get $4)
- (i32.const 1)
+ (local.set $3
+ (i32.shl
+ (local.get $4)
+ (i32.const 1)
+ )
)
- )
- (if
- (local.tee $3
- (i32.load
- (local.tee $4
- (i32.add
+ (if
+ (local.tee $2
+ (i32.load
+ (local.tee $4
(i32.add
- (local.get $1)
- (i32.const 16)
- )
- (i32.shl
- (i32.shr_u
- (local.get $4)
- (i32.const 31)
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
+ (i32.shl
+ (i32.shr_u
+ (local.get $4)
+ (i32.const 31)
+ )
+ (i32.const 2)
)
- (i32.const 2)
)
)
)
)
+ (block
+ (local.set $4
+ (local.get $3)
+ )
+ (local.set $1
+ (local.get $2)
+ )
+ (br $while-in74)
+ )
+ )
+ )
+ (if
+ (i32.lt_u
+ (local.get $4)
+ (i32.load
+ (i32.const 192)
+ )
)
+ (call $_abort)
(block
- (local.set $4
- (local.get $2)
+ (i32.store
+ (local.get $4)
+ (local.get $5)
)
- (local.set $1
- (local.get $3)
+ (i32.store offset=24
+ (local.get $5)
+ (local.get $1)
+ )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $5)
+ )
+ (i32.store offset=8
+ (local.get $5)
+ (local.get $5)
)
- (br $while-in74)
+ (br $do-once40)
)
)
+ (br $__rjto$9)
)
(if
- (i32.lt_u
- (local.get $4)
- (i32.load
- (i32.const 192)
+ (i32.and
+ (i32.ge_u
+ (local.tee $3
+ (i32.load offset=8
+ (local.get $1)
+ )
+ )
+ (local.tee $2
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ )
+ (i32.ge_u
+ (local.get $1)
+ (local.get $2)
)
)
- (call $_abort)
(block
- (i32.store
- (local.get $4)
+ (i32.store offset=12
+ (local.get $3)
(local.get $5)
)
- (i32.store offset=24
- (local.get $5)
+ (i32.store offset=8
(local.get $1)
- )
- (i32.store offset=12
- (local.get $5)
(local.get $5)
)
(i32.store offset=8
(local.get $5)
- (local.get $5)
+ (local.get $3)
)
- (br $do-once40)
- )
- )
- (br $__rjto$9)
- )
- (if
- (i32.and
- (i32.ge_u
- (local.tee $4
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $1)
- (i32.const 8)
- )
- )
- )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $1)
)
- (local.tee $3
- (i32.load
- (i32.const 192)
- )
+ (i32.store offset=24
+ (local.get $5)
+ (i32.const 0)
)
)
- (i32.ge_u
- (local.get $1)
- (local.get $3)
- )
- )
- (block
- (i32.store offset=12
- (local.get $4)
- (local.get $5)
- )
- (i32.store
- (local.get $2)
- (local.get $5)
- )
- (i32.store offset=8
- (local.get $5)
- (local.get $4)
- )
- (i32.store offset=12
- (local.get $5)
- (local.get $1)
- )
- (i32.store offset=24
- (local.get $5)
- (i32.const 0)
- )
+ (call $_abort)
)
- (call $_abort)
)
)
)
)
- )
- (block
- (if
- (i32.or
- (i32.eqz
- (local.tee $2
- (i32.load
- (i32.const 192)
+ (block
+ (if
+ (i32.or
+ (i32.eqz
+ (local.tee $3
+ (i32.load
+ (i32.const 192)
+ )
)
)
+ (i32.lt_u
+ (local.get $1)
+ (local.get $3)
+ )
)
- (i32.lt_u
+ (i32.store
+ (i32.const 192)
(local.get $1)
- (local.get $2)
)
)
(i32.store
- (i32.const 192)
+ (i32.const 624)
(local.get $1)
)
- )
- (i32.store
- (i32.const 624)
- (local.get $1)
- )
- (i32.store
- (i32.const 628)
- (local.get $3)
- )
- (i32.store
- (i32.const 636)
- (i32.const 0)
- )
- (i32.store
- (i32.const 212)
- (i32.load
- (i32.const 648)
+ (i32.store
+ (i32.const 628)
+ (local.get $2)
)
- )
- (i32.store
- (i32.const 208)
- (i32.const -1)
- )
- (local.set $2
- (i32.const 0)
- )
- (loop $while-in43
- (i32.store offset=12
- (local.tee $4
- (i32.add
- (i32.shl
- (local.get $2)
- (i32.const 3)
- )
- (i32.const 216)
- )
+ (i32.store
+ (i32.const 636)
+ (i32.const 0)
+ )
+ (i32.store
+ (i32.const 212)
+ (i32.load
+ (i32.const 648)
)
- (local.get $4)
)
- (i32.store offset=8
- (local.get $4)
- (local.get $4)
+ (i32.store
+ (i32.const 208)
+ (i32.const -1)
)
- (br_if $while-in43
- (i32.ne
- (local.tee $2
+ (local.set $3
+ (i32.const 0)
+ )
+ (loop $while-in43
+ (i32.store offset=12
+ (local.tee $4
(i32.add
- (local.get $2)
- (i32.const 1)
+ (i32.shl
+ (local.get $3)
+ (i32.const 3)
+ )
+ (i32.const 216)
)
)
- (i32.const 32)
+ (local.get $4)
+ )
+ (i32.store offset=8
+ (local.get $4)
+ (local.get $4)
+ )
+ (br_if $while-in43
+ (i32.ne
+ (local.tee $3
+ (i32.add
+ (local.get $3)
+ (i32.const 1)
+ )
+ )
+ (i32.const 32)
+ )
)
)
- )
- (i32.store
- (i32.const 200)
- (local.tee $4
- (i32.add
- (local.tee $2
- (select
- (i32.and
- (i32.sub
- (i32.const 0)
- (local.tee $2
- (i32.add
- (local.get $1)
- (i32.const 8)
+ (i32.store
+ (i32.const 200)
+ (local.tee $4
+ (i32.add
+ (local.tee $3
+ (select
+ (i32.and
+ (i32.sub
+ (i32.const 0)
+ (local.tee $3
+ (i32.add
+ (local.get $1)
+ (i32.const 8)
+ )
)
)
+ (i32.const 7)
+ )
+ (i32.const 0)
+ (i32.and
+ (local.get $3)
+ (i32.const 7)
)
- (i32.const 7)
- )
- (i32.const 0)
- (i32.and
- (local.get $2)
- (i32.const 7)
)
)
+ (local.get $1)
)
- (local.get $1)
)
)
- )
- (i32.store
- (i32.const 188)
- (local.tee $1
- (i32.sub
- (i32.add
+ (i32.store
+ (i32.const 188)
+ (local.tee $1
+ (i32.sub
+ (i32.add
+ (local.get $2)
+ (i32.const -40)
+ )
(local.get $3)
- (i32.const -40)
)
- (local.get $2)
)
)
- )
- (i32.store offset=4
- (local.get $4)
- (i32.or
- (local.get $1)
- (i32.const 1)
- )
- )
- (i32.store offset=4
- (i32.add
- (local.get $1)
+ (i32.store offset=4
(local.get $4)
+ (i32.or
+ (local.get $1)
+ (i32.const 1)
+ )
)
- (i32.const 40)
- )
- (i32.store
- (i32.const 204)
- (i32.load
- (i32.const 664)
+ (i32.store offset=4
+ (i32.add
+ (local.get $1)
+ (local.get $4)
+ )
+ (i32.const 40)
+ )
+ (i32.store
+ (i32.const 204)
+ (i32.load
+ (i32.const 664)
+ )
)
)
)
- )
- (br_if $folding-inner0
- (i32.gt_u
- (local.tee $1
- (i32.load
- (i32.const 188)
+ (br_if $folding-inner0
+ (i32.gt_u
+ (local.tee $1
+ (i32.load
+ (i32.const 188)
+ )
)
+ (local.get $0)
)
- (local.get $0)
)
)
+ (i32.store
+ (call $___errno_location)
+ (i32.const 12)
+ )
+ (return
+ (i32.const 0)
+ )
)
(i32.store
- (call $___errno_location)
- (i32.const 12)
- )
- (return
- (i32.const 0)
- )
- )
- (i32.store
- (i32.const 188)
- (local.tee $3
- (i32.sub
- (local.get $1)
- (local.get $0)
+ (i32.const 188)
+ (local.tee $2
+ (i32.sub
+ (local.get $1)
+ (local.get $0)
+ )
)
)
- )
- (i32.store
- (i32.const 200)
- (local.tee $1
- (i32.add
- (local.tee $2
- (i32.load
- (i32.const 200)
+ (i32.store
+ (i32.const 200)
+ (local.tee $1
+ (i32.add
+ (local.tee $3
+ (i32.load
+ (i32.const 200)
+ )
)
+ (local.get $0)
)
- (local.get $0)
)
)
- )
- (i32.store offset=4
- (local.get $1)
- (i32.or
- (local.get $3)
- (i32.const 1)
+ (i32.store offset=4
+ (local.get $1)
+ (i32.or
+ (local.get $2)
+ (i32.const 1)
+ )
)
- )
- (i32.store offset=4
- (local.get $2)
- (i32.or
- (local.get $0)
- (i32.const 3)
+ (i32.store offset=4
+ (local.get $3)
+ (i32.or
+ (local.get $0)
+ (i32.const 3)
+ )
)
)
(i32.add
- (local.get $2)
+ (local.get $3)
(i32.const 8)
)
)
@@ -12982,9 +12937,9 @@
)
(if
(i32.eq
- (local.tee $5
+ (local.tee $4
(i32.and
- (local.tee $7
+ (local.tee $8
(i32.load
(i32.add
(local.get $0)
@@ -12999,12 +12954,12 @@
)
(call $_abort)
)
- (local.set $8
+ (local.set $7
(i32.add
(local.get $1)
(local.tee $0
(i32.and
- (local.get $7)
+ (local.get $8)
(i32.const -8)
)
)
@@ -13012,26 +12967,26 @@
)
(if
(i32.and
- (local.get $7)
+ (local.get $8)
(i32.const 1)
)
(block
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
)
(block $do-once
- (local.set $7
+ (local.set $8
(i32.load
(local.get $1)
)
)
(if
(i32.eqz
- (local.get $5)
+ (local.get $4)
)
(return)
)
@@ -13040,7 +12995,7 @@
(local.tee $1
(i32.sub
(local.get $1)
- (local.get $7)
+ (local.get $8)
)
)
(local.get $11)
@@ -13050,7 +13005,7 @@
(local.set $0
(i32.add
(local.get $0)
- (local.get $7)
+ (local.get $8)
)
)
(if
@@ -13064,14 +13019,9 @@
(if
(i32.ne
(i32.and
- (local.tee $3
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $8)
- (i32.const 4)
- )
- )
+ (local.tee $2
+ (i32.load offset=4
+ (local.get $7)
)
)
(i32.const 3)
@@ -13079,10 +13029,10 @@
(i32.const 3)
)
(block
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
(br $do-once)
@@ -13092,10 +13042,10 @@
(i32.const 184)
(local.get $0)
)
- (i32.store
- (local.get $2)
+ (i32.store offset=4
+ (local.get $7)
(i32.and
- (local.get $3)
+ (local.get $2)
(i32.const -2)
)
)
@@ -13116,15 +13066,15 @@
(return)
)
)
- (local.set $5
+ (local.set $4
(i32.shr_u
- (local.get $7)
+ (local.get $8)
(i32.const 3)
)
)
(if
(i32.lt_u
- (local.get $7)
+ (local.get $8)
(i32.const 256)
)
(block
@@ -13135,15 +13085,15 @@
)
(if
(i32.ne
- (local.tee $2
+ (local.tee $3
(i32.load offset=8
(local.get $1)
)
)
- (local.tee $3
+ (local.tee $2
(i32.add
(i32.shl
- (local.get $5)
+ (local.get $4)
(i32.const 3)
)
(i32.const 216)
@@ -13153,7 +13103,7 @@
(block
(if
(i32.lt_u
- (local.get $2)
+ (local.get $3)
(local.get $11)
)
(call $_abort)
@@ -13162,7 +13112,7 @@
(i32.ne
(local.get $1)
(i32.load offset=12
- (local.get $2)
+ (local.get $3)
)
)
(call $_abort)
@@ -13171,7 +13121,7 @@
)
(if
(i32.eq
- (local.get $2)
+ (local.get $3)
(local.get $6)
)
(block
@@ -13184,16 +13134,16 @@
(i32.xor
(i32.shl
(i32.const 1)
- (local.get $5)
+ (local.get $4)
)
(i32.const -1)
)
)
)
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
(br $do-once)
@@ -13201,10 +13151,10 @@
)
(if
(i32.eq
- (local.get $3)
+ (local.get $2)
(local.get $6)
)
- (local.set $4
+ (local.set $5
(i32.add
(local.get $6)
(i32.const 8)
@@ -13218,50 +13168,51 @@
)
(call $_abort)
)
+ (local.set $2
+ (i32.add
+ (local.get $6)
+ (i32.const 8)
+ )
+ )
(if
(i32.eq
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $6)
- (i32.const 8)
- )
- )
+ (i32.load offset=8
+ (local.get $6)
)
(local.get $1)
)
- (local.set $4
- (local.get $3)
+ (local.set $5
+ (local.get $2)
)
(call $_abort)
)
)
)
(i32.store offset=12
- (local.get $2)
+ (local.get $3)
(local.get $6)
)
(i32.store
- (local.get $4)
- (local.get $2)
+ (local.get $5)
+ (local.get $3)
)
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
(br $do-once)
)
)
- (local.set $12
+ (local.set $10
(i32.load offset=24
(local.get $1)
)
)
(if
(i32.eq
- (local.tee $4
+ (local.tee $5
(i32.load offset=12
(local.get $1)
)
@@ -13269,78 +13220,79 @@
(local.get $1)
)
(block $do-once0
+ (local.set $5
+ (i32.add
+ (local.tee $8
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
+ )
+ (i32.const 4)
+ )
+ )
(if
(i32.eqz
- (local.tee $5
- (i32.load
- (local.tee $4
- (i32.add
- (local.tee $7
- (i32.add
- (local.get $1)
- (i32.const 16)
- )
- )
- (i32.const 4)
- )
- )
+ (local.tee $4
+ (i32.load offset=4
+ (local.get $8)
)
)
)
(block
(br_if $do-once0
(i32.eqz
- (local.tee $5
- (i32.load
- (local.get $7)
+ (local.tee $4
+ (i32.load offset=16
+ (local.get $1)
)
)
)
)
- (local.set $4
- (local.get $7)
+ (local.set $5
+ (local.get $8)
)
)
)
(loop $while-in
(if
- (local.tee $7
+ (local.tee $8
(i32.load
- (local.tee $10
+ (local.tee $12
(i32.add
- (local.get $5)
+ (local.get $4)
(i32.const 20)
)
)
)
)
(block
- (local.set $5
- (local.get $7)
- )
(local.set $4
- (local.get $10)
+ (local.get $8)
+ )
+ (local.set $5
+ (local.get $12)
)
(br $while-in)
)
)
(if
- (local.tee $7
+ (local.tee $8
(i32.load
- (local.tee $10
+ (local.tee $12
(i32.add
- (local.get $5)
+ (local.get $4)
(i32.const 16)
)
)
)
)
(block
- (local.set $5
- (local.get $7)
- )
(local.set $4
- (local.get $10)
+ (local.get $8)
+ )
+ (local.set $5
+ (local.get $12)
)
(br $while-in)
)
@@ -13348,17 +13300,17 @@
)
(if
(i32.lt_u
- (local.get $4)
+ (local.get $5)
(local.get $11)
)
(call $_abort)
(block
(i32.store
- (local.get $4)
+ (local.get $5)
(i32.const 0)
)
(local.set $6
- (local.get $5)
+ (local.get $4)
)
)
)
@@ -13366,7 +13318,7 @@
(block
(if
(i32.lt_u
- (local.tee $10
+ (local.tee $4
(i32.load offset=8
(local.get $1)
)
@@ -13378,40 +13330,30 @@
(if
(i32.ne
(local.get $1)
- (i32.load
- (local.tee $7
- (i32.add
- (local.get $10)
- (i32.const 12)
- )
- )
+ (i32.load offset=12
+ (local.get $4)
)
)
(call $_abort)
)
(if
(i32.eq
- (i32.load
- (local.tee $5
- (i32.add
- (local.get $4)
- (i32.const 8)
- )
- )
+ (i32.load offset=8
+ (local.get $5)
)
(local.get $1)
)
(block
- (i32.store
- (local.get $7)
+ (i32.store offset=12
(local.get $4)
+ (local.get $5)
)
- (i32.store
+ (i32.store offset=8
(local.get $5)
- (local.get $10)
+ (local.get $4)
)
(local.set $6
- (local.get $4)
+ (local.get $5)
)
)
(call $_abort)
@@ -13419,15 +13361,15 @@
)
)
(if
- (local.get $12)
+ (local.get $10)
(block
(if
(i32.eq
(i32.load
- (local.tee $4
+ (local.tee $5
(i32.add
(i32.shl
- (local.tee $5
+ (local.tee $4
(i32.load offset=28
(local.get $1)
)
@@ -13442,7 +13384,7 @@
)
(block
(i32.store
- (local.get $4)
+ (local.get $5)
(local.get $6)
)
(if
@@ -13459,16 +13401,16 @@
(i32.xor
(i32.shl
(i32.const 1)
- (local.get $5)
+ (local.get $4)
)
(i32.const -1)
)
)
)
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
(br $do-once)
@@ -13478,7 +13420,7 @@
(block
(if
(i32.lt_u
- (local.get $12)
+ (local.get $10)
(i32.load
(i32.const 192)
)
@@ -13487,22 +13429,17 @@
)
(if
(i32.eq
- (i32.load
- (local.tee $4
- (i32.add
- (local.get $12)
- (i32.const 16)
- )
- )
+ (i32.load offset=16
+ (local.get $10)
)
(local.get $1)
)
- (i32.store
- (local.get $4)
+ (i32.store offset=16
+ (local.get $10)
(local.get $6)
)
(i32.store offset=20
- (local.get $12)
+ (local.get $10)
(local.get $6)
)
)
@@ -13511,10 +13448,10 @@
(local.get $6)
)
(block
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
(br $do-once)
@@ -13533,85 +13470,92 @@
)
(call $_abort)
)
- (i32.store offset=24
- (local.get $6)
- (local.get $12)
+ (i32.store
+ (i32.add
+ (local.get $6)
+ (i32.const 24)
+ )
+ (local.get $10)
)
(if
- (local.tee $7
- (i32.load
- (local.tee $4
- (i32.add
- (local.get $1)
- (i32.const 16)
- )
- )
+ (local.tee $4
+ (i32.load offset=16
+ (local.get $1)
)
)
(if
(i32.lt_u
- (local.get $7)
+ (local.get $4)
(local.get $5)
)
(call $_abort)
(block
- (i32.store offset=16
- (local.get $6)
- (local.get $7)
+ (i32.store
+ (i32.add
+ (local.get $6)
+ (i32.const 16)
+ )
+ (local.get $4)
)
(i32.store offset=24
- (local.get $7)
+ (local.get $4)
(local.get $6)
)
)
)
)
(if
- (local.tee $4
+ (local.tee $5
(i32.load offset=4
- (local.get $4)
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
)
)
(if
(i32.lt_u
- (local.get $4)
+ (local.get $5)
(i32.load
(i32.const 192)
)
)
(call $_abort)
(block
- (i32.store offset=20
- (local.get $6)
- (local.get $4)
+ (i32.store
+ (i32.add
+ (local.get $6)
+ (i32.const 20)
+ )
+ (local.get $5)
)
(i32.store offset=24
- (local.get $4)
+ (local.get $5)
(local.get $6)
)
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
)
)
(block
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
)
)
)
(block
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
)
@@ -13620,22 +13564,17 @@
)
(if
(i32.ge_u
- (local.get $2)
- (local.get $8)
+ (local.get $3)
+ (local.get $7)
)
(call $_abort)
)
(if
(i32.eqz
(i32.and
- (local.tee $1
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $8)
- (i32.const 4)
- )
- )
+ (local.tee $0
+ (i32.load offset=4
+ (local.get $7)
)
)
(i32.const 1)
@@ -13645,21 +13584,24 @@
)
(if
(i32.and
- (local.get $1)
+ (local.get $0)
(i32.const 2)
)
(block
- (i32.store
- (local.get $0)
+ (i32.store offset=4
+ (local.get $7)
(i32.and
- (local.get $1)
+ (local.get $0)
(i32.const -2)
)
)
- (i32.store offset=4
- (local.get $2)
- (i32.or
+ (i32.store
+ (i32.add
(local.get $3)
+ (i32.const 4)
+ )
+ (i32.or
+ (local.get $2)
(i32.const 1)
)
)
@@ -13668,7 +13610,7 @@
(local.get $2)
(local.get $3)
)
- (local.get $3)
+ (local.get $2)
)
)
(block
@@ -13677,7 +13619,7 @@
(i32.load
(i32.const 200)
)
- (local.get $8)
+ (local.get $7)
)
(block
(i32.store
@@ -13687,16 +13629,19 @@
(i32.load
(i32.const 188)
)
- (local.get $3)
+ (local.get $2)
)
)
)
(i32.store
(i32.const 200)
- (local.get $2)
+ (local.get $3)
)
- (i32.store offset=4
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
(i32.or
(local.get $0)
(i32.const 1)
@@ -13704,7 +13649,7 @@
)
(if
(i32.ne
- (local.get $2)
+ (local.get $3)
(i32.load
(i32.const 196)
)
@@ -13727,7 +13672,7 @@
(i32.load
(i32.const 196)
)
- (local.get $8)
+ (local.get $7)
)
(block
(i32.store
@@ -13737,16 +13682,19 @@
(i32.load
(i32.const 184)
)
- (local.get $3)
+ (local.get $2)
)
)
)
(i32.store
(i32.const 196)
- (local.get $2)
+ (local.get $3)
)
- (i32.store offset=4
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
(i32.or
(local.get $0)
(i32.const 1)
@@ -13755,51 +13703,51 @@
(i32.store
(i32.add
(local.get $0)
- (local.get $2)
+ (local.get $3)
)
(local.get $0)
)
(return)
)
)
- (local.set $5
+ (local.set $4
(i32.add
(i32.and
- (local.get $1)
+ (local.get $0)
(i32.const -8)
)
- (local.get $3)
+ (local.get $2)
)
)
- (local.set $3
+ (local.set $2
(i32.shr_u
- (local.get $1)
+ (local.get $0)
(i32.const 3)
)
)
(block $do-once4
(if
(i32.lt_u
- (local.get $1)
+ (local.get $0)
(i32.const 256)
)
(block
- (local.set $4
+ (local.set $5
(i32.load offset=12
- (local.get $8)
+ (local.get $7)
)
)
(if
(i32.ne
(local.tee $1
(i32.load offset=8
- (local.get $8)
+ (local.get $7)
)
)
(local.tee $0
(i32.add
(i32.shl
- (local.get $3)
+ (local.get $2)
(i32.const 3)
)
(i32.const 216)
@@ -13818,7 +13766,7 @@
)
(if
(i32.ne
- (local.get $8)
+ (local.get $7)
(i32.load offset=12
(local.get $1)
)
@@ -13830,7 +13778,7 @@
(if
(i32.eq
(local.get $1)
- (local.get $4)
+ (local.get $5)
)
(block
(i32.store
@@ -13842,7 +13790,7 @@
(i32.xor
(i32.shl
(i32.const 1)
- (local.get $3)
+ (local.get $2)
)
(i32.const -1)
)
@@ -13854,35 +13802,36 @@
(if
(i32.eq
(local.get $0)
- (local.get $4)
+ (local.get $5)
)
(local.set $14
(i32.add
- (local.get $4)
+ (local.get $5)
(i32.const 8)
)
)
(block
(if
(i32.lt_u
- (local.get $4)
+ (local.get $5)
(i32.load
(i32.const 192)
)
)
(call $_abort)
)
+ (local.set $0
+ (i32.add
+ (local.get $5)
+ (i32.const 8)
+ )
+ )
(if
(i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $4)
- (i32.const 8)
- )
- )
+ (i32.load offset=8
+ (local.get $5)
)
- (local.get $8)
+ (local.get $7)
)
(local.set $14
(local.get $0)
@@ -13893,7 +13842,7 @@
)
(i32.store offset=12
(local.get $1)
- (local.get $4)
+ (local.get $5)
)
(i32.store
(local.get $14)
@@ -13903,43 +13852,44 @@
(block
(local.set $6
(i32.load offset=24
- (local.get $8)
+ (local.get $7)
)
)
(if
(i32.eq
(local.tee $0
(i32.load offset=12
- (local.get $8)
+ (local.get $7)
)
)
- (local.get $8)
+ (local.get $7)
)
(block $do-once6
+ (local.set $0
+ (i32.add
+ (local.tee $1
+ (i32.add
+ (local.get $7)
+ (i32.const 16)
+ )
+ )
+ (i32.const 4)
+ )
+ )
(if
(i32.eqz
- (local.tee $3
- (i32.load
- (local.tee $0
- (i32.add
- (local.tee $1
- (i32.add
- (local.get $8)
- (i32.const 16)
- )
- )
- (i32.const 4)
- )
- )
+ (local.tee $2
+ (i32.load offset=4
+ (local.get $1)
)
)
)
(block
(br_if $do-once6
(i32.eqz
- (local.tee $3
- (i32.load
- (local.get $1)
+ (local.tee $2
+ (i32.load offset=16
+ (local.get $7)
)
)
)
@@ -13953,20 +13903,20 @@
(if
(local.tee $1
(i32.load
- (local.tee $4
+ (local.tee $5
(i32.add
- (local.get $3)
+ (local.get $2)
(i32.const 20)
)
)
)
)
(block
- (local.set $3
+ (local.set $2
(local.get $1)
)
(local.set $0
- (local.get $4)
+ (local.get $5)
)
(br $while-in9)
)
@@ -13974,20 +13924,20 @@
(if
(local.tee $1
(i32.load
- (local.tee $4
+ (local.tee $5
(i32.add
- (local.get $3)
+ (local.get $2)
(i32.const 16)
)
)
)
)
(block
- (local.set $3
+ (local.set $2
(local.get $1)
)
(local.set $0
- (local.get $4)
+ (local.get $5)
)
(br $while-in9)
)
@@ -14007,7 +13957,7 @@
(i32.const 0)
)
(local.set $9
- (local.get $3)
+ (local.get $2)
)
)
)
@@ -14015,9 +13965,9 @@
(block
(if
(i32.lt_u
- (local.tee $4
+ (local.tee $2
(i32.load offset=8
- (local.get $8)
+ (local.get $7)
)
)
(i32.load
@@ -14028,38 +13978,28 @@
)
(if
(i32.ne
- (local.get $8)
- (i32.load
- (local.tee $1
- (i32.add
- (local.get $4)
- (i32.const 12)
- )
- )
+ (local.get $7)
+ (i32.load offset=12
+ (local.get $2)
)
)
(call $_abort)
)
(if
(i32.eq
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
+ (i32.load offset=8
+ (local.get $0)
)
- (local.get $8)
+ (local.get $7)
)
(block
- (i32.store
- (local.get $1)
+ (i32.store offset=12
+ (local.get $2)
(local.get $0)
)
- (i32.store
- (local.get $3)
- (local.get $4)
+ (i32.store offset=8
+ (local.get $0)
+ (local.get $2)
)
(local.set $9
(local.get $0)
@@ -14078,9 +14018,9 @@
(local.tee $0
(i32.add
(i32.shl
- (local.tee $3
+ (local.tee $2
(i32.load offset=28
- (local.get $8)
+ (local.get $7)
)
)
(i32.const 2)
@@ -14089,7 +14029,7 @@
)
)
)
- (local.get $8)
+ (local.get $7)
)
(block
(i32.store
@@ -14110,7 +14050,7 @@
(i32.xor
(i32.shl
(i32.const 1)
- (local.get $3)
+ (local.get $2)
)
(i32.const -1)
)
@@ -14132,18 +14072,13 @@
)
(if
(i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $6)
- (i32.const 16)
- )
- )
+ (i32.load offset=16
+ (local.get $6)
)
- (local.get $8)
+ (local.get $7)
)
- (i32.store
- (local.get $0)
+ (i32.store offset=16
+ (local.get $6)
(local.get $9)
)
(i32.store offset=20
@@ -14161,7 +14096,7 @@
(if
(i32.lt_u
(local.get $9)
- (local.tee $3
+ (local.tee $0
(i32.load
(i32.const 192)
)
@@ -14169,34 +14104,35 @@
)
(call $_abort)
)
- (i32.store offset=24
- (local.get $9)
+ (i32.store
+ (i32.add
+ (local.get $9)
+ (i32.const 24)
+ )
(local.get $6)
)
(if
- (local.tee $1
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $8)
- (i32.const 16)
- )
- )
+ (local.tee $2
+ (i32.load offset=16
+ (local.get $7)
)
)
(if
(i32.lt_u
- (local.get $1)
- (local.get $3)
+ (local.get $2)
+ (local.get $0)
)
(call $_abort)
(block
- (i32.store offset=16
- (local.get $9)
- (local.get $1)
+ (i32.store
+ (i32.add
+ (local.get $9)
+ (i32.const 16)
+ )
+ (local.get $2)
)
(i32.store offset=24
- (local.get $1)
+ (local.get $2)
(local.get $9)
)
)
@@ -14205,7 +14141,10 @@
(if
(local.tee $0
(i32.load offset=4
- (local.get $0)
+ (i32.add
+ (local.get $7)
+ (i32.const 16)
+ )
)
)
(if
@@ -14217,8 +14156,11 @@
)
(call $_abort)
(block
- (i32.store offset=20
- (local.get $9)
+ (i32.store
+ (i32.add
+ (local.get $9)
+ (i32.const 20)
+ )
(local.get $0)
)
(i32.store offset=24
@@ -14233,49 +14175,52 @@
)
)
)
- (i32.store offset=4
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
(i32.or
- (local.get $5)
+ (local.get $4)
(i32.const 1)
)
)
(i32.store
(i32.add
- (local.get $2)
- (local.get $5)
+ (local.get $3)
+ (local.get $4)
)
- (local.get $5)
+ (local.get $4)
)
- (local.set $3
+ (local.set $2
(if (result i32)
(i32.eq
(i32.load
(i32.const 196)
)
- (local.get $2)
+ (local.get $3)
)
(block
(i32.store
(i32.const 184)
- (local.get $5)
+ (local.get $4)
)
(return)
)
- (local.get $5)
+ (local.get $4)
)
)
)
)
(local.set $0
(i32.shr_u
- (local.get $3)
+ (local.get $2)
(i32.const 3)
)
)
(if
(i32.lt_u
- (local.get $3)
+ (local.get $2)
(i32.const 256)
)
(block
@@ -14290,7 +14235,7 @@
)
(if
(i32.and
- (local.tee $3
+ (local.tee $2
(i32.load
(i32.const 176)
)
@@ -14302,29 +14247,32 @@
)
)
)
- (if
- (i32.lt_u
- (local.tee $0
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $1)
- (i32.const 8)
- )
- )
- )
- )
- (i32.load
- (i32.const 192)
+ (block
+ (local.set $2
+ (i32.add
+ (local.get $1)
+ (i32.const 8)
)
)
- (call $_abort)
- (block
- (local.set $15
- (local.get $3)
+ (if
+ (i32.lt_u
+ (local.tee $0
+ (i32.load offset=8
+ (local.get $1)
+ )
+ )
+ (i32.load
+ (i32.const 192)
+ )
)
- (local.set $13
- (local.get $0)
+ (call $_abort)
+ (block
+ (local.set $15
+ (local.get $2)
+ )
+ (local.set $13
+ (local.get $0)
+ )
)
)
)
@@ -14333,7 +14281,7 @@
(i32.const 176)
(i32.or
(local.get $0)
- (local.get $3)
+ (local.get $2)
)
)
(local.set $15
@@ -14349,42 +14297,51 @@
)
(i32.store
(local.get $15)
- (local.get $2)
+ (local.get $3)
)
- (i32.store offset=12
- (local.get $13)
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $13)
+ (i32.const 12)
+ )
+ (local.get $3)
)
- (i32.store offset=8
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
(local.get $13)
)
- (i32.store offset=12
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 12)
+ )
(local.get $1)
)
(return)
)
)
- (local.set $4
+ (local.set $5
(i32.add
(i32.shl
- (local.tee $5
+ (local.tee $4
(if (result i32)
(local.tee $0
(i32.shr_u
- (local.get $3)
+ (local.get $2)
(i32.const 8)
)
)
(if (result i32)
(i32.gt_u
- (local.get $3)
+ (local.get $2)
(i32.const 16777215)
)
(i32.const 31)
(block (result i32)
- (local.set $5
+ (local.set $4
(i32.and
(i32.shr_u
(i32.add
@@ -14412,14 +14369,14 @@
(i32.const 4)
)
)
- (local.set $4
+ (local.set $5
(i32.and
(i32.shr_u
(i32.add
(local.tee $0
(i32.shl
(local.get $0)
- (local.get $5)
+ (local.get $4)
)
)
(i32.const 245760)
@@ -14432,7 +14389,7 @@
(i32.or
(i32.and
(i32.shr_u
- (local.get $3)
+ (local.get $2)
(i32.add
(local.tee $0
(i32.add
@@ -14441,15 +14398,15 @@
(i32.or
(i32.or
(local.get $1)
- (local.get $5)
+ (local.get $4)
)
- (local.get $4)
+ (local.get $5)
)
)
(i32.shr_u
(i32.shl
(local.get $0)
- (local.get $4)
+ (local.get $5)
)
(i32.const 15)
)
@@ -14475,16 +14432,25 @@
(i32.const 480)
)
)
- (i32.store offset=28
- (local.get $2)
- (local.get $5)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 28)
+ )
+ (local.get $4)
)
- (i32.store offset=20
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 20)
+ )
(i32.const 0)
)
- (i32.store offset=16
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 16)
+ )
(i32.const 0)
)
(if
@@ -14497,25 +14463,25 @@
(local.tee $0
(i32.shl
(i32.const 1)
- (local.get $5)
+ (local.get $4)
)
)
)
(block $do-once12
- (local.set $5
+ (local.set $4
(i32.shl
- (local.get $3)
+ (local.get $2)
(select
(i32.const 0)
(i32.sub
(i32.const 25)
(i32.shr_u
- (local.get $5)
+ (local.get $4)
(i32.const 1)
)
)
(i32.eq
- (local.get $5)
+ (local.get $4)
(i32.const 31)
)
)
@@ -14523,7 +14489,7 @@
)
(local.set $0
(i32.load
- (local.get $4)
+ (local.get $5)
)
)
(block $__rjto$1
@@ -14532,24 +14498,27 @@
(br_if $__rjti$1
(i32.eq
(i32.and
- (i32.load offset=4
- (local.get $0)
+ (i32.load
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
)
(i32.const -8)
)
- (local.get $3)
+ (local.get $2)
)
)
- (local.set $4
+ (local.set $5
(i32.shl
- (local.get $5)
+ (local.get $4)
(i32.const 1)
)
)
(if
(local.tee $1
(i32.load
- (local.tee $5
+ (local.tee $4
(i32.add
(i32.add
(local.get $0)
@@ -14557,7 +14526,7 @@
)
(i32.shl
(i32.shr_u
- (local.get $5)
+ (local.get $4)
(i32.const 31)
)
(i32.const 2)
@@ -14567,8 +14536,8 @@
)
)
(block
- (local.set $5
- (local.get $4)
+ (local.set $4
+ (local.get $5)
)
(local.set $0
(local.get $1)
@@ -14579,7 +14548,7 @@
)
(if
(i32.lt_u
- (local.get $5)
+ (local.get $4)
(i32.load
(i32.const 192)
)
@@ -14587,20 +14556,29 @@
(call $_abort)
(block
(i32.store
- (local.get $5)
- (local.get $2)
+ (local.get $4)
+ (local.get $3)
)
- (i32.store offset=24
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 24)
+ )
(local.get $0)
)
- (i32.store offset=12
- (local.get $2)
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 12)
+ )
+ (local.get $3)
)
- (i32.store offset=8
- (local.get $2)
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (local.get $3)
)
(br $do-once12)
)
@@ -14610,17 +14588,12 @@
(if
(i32.and
(i32.ge_u
- (local.tee $4
- (i32.load
- (local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
+ (local.tee $1
+ (i32.load offset=8
+ (local.get $0)
)
)
- (local.tee $3
+ (local.tee $2
(i32.load
(i32.const 192)
)
@@ -14628,28 +14601,37 @@
)
(i32.ge_u
(local.get $0)
- (local.get $3)
+ (local.get $2)
)
)
(block
(i32.store offset=12
- (local.get $4)
- (local.get $2)
- )
- (i32.store
(local.get $1)
- (local.get $2)
+ (local.get $3)
)
(i32.store offset=8
- (local.get $2)
- (local.get $4)
+ (local.get $0)
+ (local.get $3)
)
- (i32.store offset=12
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (local.get $1)
+ )
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 12)
+ )
(local.get $0)
)
- (i32.store offset=24
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 24)
+ )
(i32.const 0)
)
)
@@ -14666,20 +14648,29 @@
)
)
(i32.store
- (local.get $4)
- (local.get $2)
+ (local.get $5)
+ (local.get $3)
)
- (i32.store offset=24
- (local.get $2)
- (local.get $4)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 24)
+ )
+ (local.get $5)
)
- (i32.store offset=12
- (local.get $2)
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 12)
+ )
+ (local.get $3)
)
- (i32.store offset=8
- (local.get $2)
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (local.get $3)
)
)
)
@@ -14704,7 +14695,7 @@
(loop $while-in17
(local.set $0
(i32.add
- (local.tee $3
+ (local.tee $2
(i32.load
(local.get $0)
)
@@ -14713,7 +14704,7 @@
)
)
(br_if $while-in17
- (local.get $3)
+ (local.get $2)
)
)
(i32.store
diff --git a/test/emcc_hello_world.fromasm.imprecise b/test/emcc_hello_world.fromasm.imprecise
index e3feaa729..aedcabd06 100644
--- a/test/emcc_hello_world.fromasm.imprecise
+++ b/test/emcc_hello_world.fromasm.imprecise
@@ -261,8 +261,11 @@
(loop $while-in
(if
(i32.ne
- (i32.load8_u offset=687
- (local.get $1)
+ (i32.load8_u
+ (i32.add
+ (local.get $1)
+ (i32.const 687)
+ )
)
(local.get $0)
)
@@ -496,11 +499,9 @@
)
(i32.store offset=12
(local.get $3)
- (local.tee $0
- (i32.add
- (local.get $3)
- (i32.const 20)
- )
+ (i32.add
+ (local.get $3)
+ (i32.const 20)
)
)
(i32.store offset=16
@@ -519,14 +520,14 @@
(i32.const 0)
)
(block (result i32)
- (i32.store
- (local.get $0)
+ (i32.store offset=20
+ (local.get $4)
(i32.const -1)
)
(i32.const -1)
)
- (i32.load
- (local.get $0)
+ (i32.load offset=20
+ (local.get $4)
)
)
)
@@ -658,11 +659,7 @@
(local $8 i32)
(local $9 i32)
(local $10 i32)
- (local $11 i32)
- (local $12 i32)
- (local $13 i32)
- (local $14 i32)
- (local.set $10
+ (local.set $8
(global.get $STACKTOP)
)
(global.set $STACKTOP
@@ -678,43 +675,33 @@
)
(call $abort)
)
- (local.set $8
+ (local.set $9
(i32.add
- (local.get $10)
+ (local.get $8)
(i32.const 16)
)
)
- (i32.store
- (local.tee $4
- (i32.add
- (local.tee $9
- (local.get $10)
- )
- (i32.const 32)
- )
+ (i32.store offset=32
+ (local.tee $6
+ (local.get $8)
)
(local.tee $3
- (i32.load
- (local.tee $6
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
+ (i32.load offset=28
+ (local.get $0)
)
)
)
(i32.store offset=4
- (local.get $4)
+ (local.tee $4
+ (i32.add
+ (local.get $6)
+ (i32.const 32)
+ )
+ )
(local.tee $3
(i32.sub
- (i32.load
- (local.tee $11
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
(local.get $3)
)
@@ -728,25 +715,13 @@
(local.get $4)
(local.get $2)
)
- (local.set $13
- (i32.add
- (local.get $0)
- (i32.const 60)
- )
- )
- (local.set $14
- (i32.add
- (local.get $0)
- (i32.const 44)
- )
- )
(local.set $1
(local.get $4)
)
(local.set $4
(i32.const 2)
)
- (local.set $12
+ (local.set $10
(i32.add
(local.get $2)
(local.get $3)
@@ -766,24 +741,24 @@
(local.get $0)
)
(i32.store
- (local.get $9)
- (i32.load
- (local.get $13)
+ (local.get $6)
+ (i32.load offset=60
+ (local.get $0)
)
)
(i32.store offset=4
- (local.get $9)
+ (local.get $6)
(local.get $1)
)
(i32.store offset=8
- (local.get $9)
+ (local.get $6)
(local.get $4)
)
(local.set $3
(call $___syscall_ret
(call $___syscall146
(i32.const 146)
- (local.get $9)
+ (local.get $6)
)
)
)
@@ -792,25 +767,25 @@
)
)
(block
- (i32.store
+ (i32.store offset=16
(local.get $8)
- (i32.load
- (local.get $13)
+ (i32.load offset=60
+ (local.get $0)
)
)
(i32.store offset=4
- (local.get $8)
+ (local.get $9)
(local.get $1)
)
(i32.store offset=8
- (local.get $8)
+ (local.get $9)
(local.get $4)
)
(local.set $3
(call $___syscall_ret
(call $___syscall146
(i32.const 146)
- (local.get $8)
+ (local.get $9)
)
)
)
@@ -819,7 +794,7 @@
(br_if $__rjti$0
(i32.eq
(local.get $3)
- (local.get $12)
+ (local.get $10)
)
)
(br_if $__rjti$1
@@ -833,27 +808,33 @@
(i32.gt_u
(local.get $3)
(local.tee $5
- (i32.load offset=4
- (local.get $1)
+ (i32.load
+ (i32.add
+ (local.get $1)
+ (i32.const 4)
+ )
)
)
)
(block (result i32)
- (i32.store
- (local.get $6)
+ (i32.store offset=28
+ (local.get $0)
(local.tee $7
- (i32.load
- (local.get $14)
+ (i32.load offset=44
+ (local.get $0)
)
)
)
- (i32.store
- (local.get $11)
+ (i32.store offset=20
+ (local.get $0)
(local.get $7)
)
(local.set $7
- (i32.load offset=12
- (local.get $1)
+ (i32.load
+ (i32.add
+ (local.get $1)
+ (i32.const 12)
+ )
)
)
(local.set $1
@@ -880,11 +861,11 @@
(i32.const 2)
)
(block
- (i32.store
- (local.get $6)
+ (i32.store offset=28
+ (local.get $0)
(i32.add
- (i32.load
- (local.get $6)
+ (i32.load offset=28
+ (local.get $0)
)
(local.get $3)
)
@@ -913,16 +894,19 @@
(local.get $5)
)
)
- (i32.store offset=4
- (local.get $1)
+ (i32.store
+ (i32.add
+ (local.get $1)
+ (i32.const 4)
+ )
(i32.sub
(local.get $7)
(local.get $5)
)
)
- (local.set $12
+ (local.set $10
(i32.sub
- (local.get $12)
+ (local.get $10)
(local.get $3)
)
)
@@ -933,8 +917,8 @@
(local.get $0)
(i32.add
(local.tee $1
- (i32.load
- (local.get $14)
+ (i32.load offset=44
+ (local.get $0)
)
)
(i32.load offset=48
@@ -942,12 +926,12 @@
)
)
)
- (i32.store
- (local.get $6)
+ (i32.store offset=28
+ (local.get $0)
(local.get $1)
)
- (i32.store
- (local.get $11)
+ (i32.store offset=20
+ (local.get $0)
(local.get $1)
)
(br $__rjto$1)
@@ -956,12 +940,12 @@
(local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $6)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $11)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
(i32.store
@@ -990,7 +974,7 @@
)
)
(global.set $STACKTOP
- (local.get $10)
+ (local.get $8)
)
(local.get $2)
)
@@ -1002,11 +986,7 @@
(local $6 i32)
(local $7 i32)
(local $8 i32)
- (local $9 i32)
- (local $10 i32)
- (local $11 i32)
- (local $12 i32)
- (local.set $6
+ (local.set $2
(global.get $STACKTOP)
)
(global.set $STACKTOP
@@ -1022,26 +1002,27 @@
)
(call $abort)
)
- (local.set $3
+ (local.set $6
(i32.add
- (local.get $6)
+ (local.get $2)
(i32.const 120)
)
)
- (local.set $5
+ (local.set $7
+ (local.get $2)
+ )
+ (local.set $4
(i32.add
- (local.tee $4
- (local.get $6)
- )
+ (local.get $2)
(i32.const 136)
)
)
- (local.set $8
+ (local.set $5
(i32.add
- (local.tee $2
- (local.tee $7
+ (local.tee $3
+ (local.tee $8
(i32.add
- (local.get $4)
+ (local.get $2)
(i32.const 80)
)
)
@@ -1051,23 +1032,23 @@
)
(loop $do-in
(i32.store
- (local.get $2)
+ (local.get $3)
(i32.const 0)
)
(br_if $do-in
(i32.lt_s
- (local.tee $2
+ (local.tee $3
(i32.add
- (local.get $2)
+ (local.get $3)
(i32.const 4)
)
)
- (local.get $8)
+ (local.get $5)
)
)
)
- (i32.store
- (local.get $3)
+ (i32.store offset=120
+ (local.get $2)
(i32.load
(local.get $1)
)
@@ -1077,15 +1058,15 @@
(i32.lt_s
(call $_printf_core
(i32.const 0)
- (local.get $3)
- (local.get $4)
+ (local.get $6)
(local.get $7)
+ (local.get $8)
)
(i32.const 0)
)
(i32.const -1)
(block (result i32)
- (local.set $9
+ (local.set $3
(i32.load
(local.get $0)
)
@@ -1100,87 +1081,62 @@
(i32.store
(local.get $0)
(i32.and
- (local.get $9)
+ (local.get $3)
(i32.const -33)
)
)
)
(if
- (i32.load
- (local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 48)
- )
- )
+ (i32.load offset=48
+ (local.get $0)
)
(drop
(call $_printf_core
(local.get $0)
- (local.get $3)
- (local.get $4)
+ (local.get $6)
(local.get $7)
+ (local.get $8)
)
)
(block
- (local.set $11
- (i32.load
- (local.tee $10
- (i32.add
- (local.get $0)
- (i32.const 44)
- )
- )
+ (local.set $5
+ (i32.load offset=44
+ (local.get $0)
)
)
- (i32.store
- (local.get $10)
- (local.get $5)
+ (i32.store offset=44
+ (local.get $0)
+ (local.get $4)
)
- (i32.store
- (local.tee $2
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
- (local.get $5)
+ (i32.store offset=28
+ (local.get $0)
+ (local.get $4)
)
- (i32.store
- (local.tee $12
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
- (local.get $5)
+ (i32.store offset=20
+ (local.get $0)
+ (local.get $4)
)
- (i32.store
- (local.get $1)
+ (i32.store offset=48
+ (local.get $0)
(i32.const 80)
)
- (i32.store
- (local.tee $8
- (i32.add
- (local.get $0)
- (i32.const 16)
- )
- )
+ (i32.store offset=16
+ (local.get $0)
(i32.add
- (local.get $5)
+ (local.get $4)
(i32.const 80)
)
)
(drop
(call $_printf_core
(local.get $0)
- (local.get $3)
- (local.get $4)
+ (local.get $6)
(local.get $7)
+ (local.get $8)
)
)
(if
- (local.get $11)
+ (local.get $5)
(block
(drop
(call_indirect (type $FUNCSIG$iiii)
@@ -1198,24 +1154,24 @@
)
)
)
- (i32.store
- (local.get $10)
- (local.get $11)
+ (i32.store offset=44
+ (local.get $0)
+ (local.get $5)
)
- (i32.store
- (local.get $1)
+ (i32.store offset=48
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $8)
+ (i32.store offset=16
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $2)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $12)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
)
@@ -1229,7 +1185,7 @@
(local.get $0)
)
(i32.and
- (local.get $9)
+ (local.get $3)
(i32.const 32)
)
)
@@ -1239,25 +1195,19 @@
)
)
(global.set $STACKTOP
- (local.get $6)
+ (local.get $2)
)
)
(func $___fwritex (; 36 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32)
(local $3 i32)
(local $4 i32)
(local $5 i32)
- (local $6 i32)
(block $label$break$L5
(block $__rjti$0
(br_if $__rjti$0
(local.tee $3
- (i32.load
- (local.tee $4
- (i32.add
- (local.get $2)
- (i32.const 16)
- )
- )
+ (i32.load offset=16
+ (local.get $2)
)
)
)
@@ -1269,8 +1219,8 @@
)
(block
(local.set $3
- (i32.load
- (local.get $4)
+ (i32.load offset=16
+ (local.get $2)
)
)
(br $__rjti$0)
@@ -1283,13 +1233,8 @@
(i32.sub
(local.get $3)
(local.tee $4
- (i32.load
- (local.tee $5
- (i32.add
- (local.get $2)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $2)
)
)
)
@@ -1341,7 +1286,7 @@
(i32.load8_s
(i32.add
(local.get $0)
- (local.tee $6
+ (local.tee $5
(i32.add
(local.get $3)
(i32.const -1)
@@ -1353,7 +1298,7 @@
)
(block
(local.set $3
- (local.get $6)
+ (local.get $5)
)
(br $while-in)
)
@@ -1379,8 +1324,8 @@
)
)
(local.set $4
- (i32.load
- (local.get $5)
+ (i32.load offset=20
+ (local.get $2)
)
)
(local.set $1
@@ -1407,11 +1352,11 @@
(local.get $1)
)
)
- (i32.store
- (local.get $5)
+ (i32.store offset=20
+ (local.get $2)
(i32.add
- (i32.load
- (local.get $5)
+ (i32.load offset=20
+ (local.get $2)
)
(local.get $1)
)
@@ -1420,21 +1365,14 @@
)
(func $___towrite (; 37 ;) (; has Stack IR ;) (param $0 i32) (result i32)
(local $1 i32)
- (local $2 i32)
- (local.set $1
- (i32.load8_s
- (local.tee $2
- (i32.add
+ (i32.store8 offset=74
+ (local.get $0)
+ (i32.or
+ (local.tee $1
+ (i32.load8_s offset=74
(local.get $0)
- (i32.const 74)
)
)
- )
- )
- (i32.store8
- (local.get $2)
- (i32.or
- (local.get $1)
(i32.add
(local.get $1)
(i32.const 255)
@@ -1892,29 +1830,15 @@
(local $1 i32)
(local $2 i32)
(local $3 i32)
- (local $4 i32)
- (local $5 i32)
- (local $6 i32)
- (local $7 i32)
(block $__rjto$0 (result i32)
(block $__rjti$0
(br_if $__rjti$0
(i32.le_u
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
+ (i32.load offset=28
+ (local.get $0)
)
)
)
@@ -1938,8 +1862,8 @@
)
)
(br_if $__rjti$0
- (i32.load
- (local.get $2)
+ (i32.load offset=20
+ (local.get $0)
)
)
(br $__rjto$0
@@ -1948,29 +1872,19 @@
)
(if
(i32.lt_u
- (local.tee $4
- (i32.load
- (local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 4)
- )
- )
+ (local.tee $1
+ (i32.load offset=4
+ (local.get $0)
)
)
- (local.tee $6
- (i32.load
- (local.tee $5
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
+ (local.tee $2
+ (i32.load offset=8
+ (local.get $0)
)
)
)
(block
- (local.set $7
+ (local.set $3
(i32.load offset=40
(local.get $0)
)
@@ -1979,13 +1893,13 @@
(call_indirect (type $FUNCSIG$iiii)
(local.get $0)
(i32.sub
- (local.get $4)
- (local.get $6)
+ (local.get $1)
+ (local.get $2)
)
(i32.const 1)
(i32.add
(i32.and
- (local.get $7)
+ (local.get $3)
(i32.const 7)
)
(i32.const 2)
@@ -1998,20 +1912,20 @@
(local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $3)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $2)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $5)
+ (i32.store offset=8
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $1)
+ (i32.store offset=4
+ (local.get $0)
(i32.const 0)
)
(i32.const 0)
@@ -2067,8 +1981,7 @@
(local $47 i32)
(local $48 i32)
(local $49 i32)
- (local $50 i32)
- (local.set $34
+ (local.set $20
(global.get $STACKTOP)
)
(global.set $STACKTOP
@@ -2084,16 +1997,16 @@
)
(call $abort)
)
- (local.set $20
+ (local.set $39
(i32.add
- (local.get $34)
+ (local.get $20)
(i32.const 16)
)
)
- (local.set $35
+ (local.set $33
(i32.add
(local.tee $13
- (local.get $34)
+ (local.get $20)
)
(i32.const 528)
)
@@ -2104,7 +2017,7 @@
(i32.const 0)
)
)
- (local.set $38
+ (local.set $36
(local.tee $25
(i32.add
(local.tee $4
@@ -2117,21 +2030,16 @@
)
)
)
- (local.set $39
+ (local.set $40
(i32.add
(local.get $4)
(i32.const 39)
)
)
- (local.set $43
+ (local.set $41
(i32.add
- (local.tee $40
- (i32.add
- (local.get $13)
- (i32.const 8)
- )
- )
- (i32.const 4)
+ (local.get $13)
+ (i32.const 8)
)
)
(local.set $32
@@ -2145,18 +2053,18 @@
(i32.const 12)
)
)
- (local.set $41
+ (local.set $42
(i32.add
(local.get $4)
(i32.const 11)
)
)
- (local.set $44
+ (local.set $43
(i32.sub
(local.tee $27
(local.get $32)
)
- (local.tee $36
+ (local.tee $34
(local.tee $23
(i32.add
(local.get $13)
@@ -2166,21 +2074,21 @@
)
)
)
- (local.set $45
+ (local.set $44
(i32.sub
(i32.const -2)
- (local.get $36)
+ (local.get $34)
)
)
- (local.set $46
+ (local.set $45
(i32.add
(local.get $27)
(i32.const 2)
)
)
- (local.set $48
+ (local.set $47
(i32.add
- (local.tee $47
+ (local.tee $46
(i32.add
(local.get $13)
(i32.const 24)
@@ -2189,7 +2097,7 @@
(i32.const 288)
)
)
- (local.set $42
+ (local.set $37
(local.tee $29
(i32.add
(local.get $23)
@@ -2197,7 +2105,7 @@
)
)
)
- (local.set $33
+ (local.set $38
(i32.add
(local.get $23)
(i32.const 8)
@@ -3507,7 +3415,7 @@
(local.tee $10
(i32.add
(i32.sub
- (local.get $38)
+ (local.get $36)
(local.tee $6
(local.get $7)
)
@@ -3630,14 +3538,14 @@
)
(br $__rjti$4)
)
- (i32.store8
- (local.get $39)
+ (i32.store8 offset=575
+ (local.get $13)
(i32.load
(local.get $13)
)
)
(local.set $4
- (local.get $39)
+ (local.get $40)
)
(local.set $10
(local.get $7)
@@ -3677,19 +3585,19 @@
)
(br $__rjti$5)
)
- (i32.store
- (local.get $40)
+ (i32.store offset=8
+ (local.get $20)
(i32.load
(local.get $13)
)
)
- (i32.store
- (local.get $43)
+ (i32.store offset=12
+ (local.get $13)
(i32.const 0)
)
(i32.store
(local.get $13)
- (local.get $40)
+ (local.get $41)
)
(local.set $7
(i32.const -1)
@@ -3723,7 +3631,7 @@
(local.get $13)
)
)
- (i32.store
+ (i32.store offset=16
(local.get $20)
(i32.const 0)
)
@@ -3802,7 +3710,7 @@
(f64.mul
(call $_frexp
(local.get $15)
- (local.get $20)
+ (local.get $39)
)
(f64.const 2)
)
@@ -3810,10 +3718,10 @@
(f64.const 0)
)
)
- (i32.store
+ (i32.store offset=16
(local.get $20)
(i32.add
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
(i32.const -1)
@@ -3927,7 +3835,7 @@
(i32.sub
(i32.const 0)
(local.tee $6
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
)
@@ -3955,12 +3863,12 @@
(local.get $32)
)
(block
- (i32.store8
- (local.get $41)
+ (i32.store8 offset=587
+ (local.get $13)
(i32.const 48)
)
(local.set $4
- (local.get $41)
+ (local.get $42)
)
)
)
@@ -4047,7 +3955,7 @@
(i32.const 1)
)
)
- (local.get $36)
+ (local.get $34)
)
(i32.const 1)
)
@@ -4096,14 +4004,14 @@
(i32.sub
(i32.add
(local.get $5)
- (local.get $46)
+ (local.get $45)
)
(local.get $7)
)
(i32.add
(local.get $4)
(i32.sub
- (local.get $44)
+ (local.get $43)
(local.get $7)
)
)
@@ -4115,7 +4023,7 @@
(i32.lt_s
(i32.add
(local.get $4)
- (local.get $45)
+ (local.get $44)
)
(local.get $5)
)
@@ -4154,7 +4062,7 @@
(local.set $4
(i32.sub
(local.get $4)
- (local.get $36)
+ (local.get $34)
)
)
(if
@@ -4231,11 +4139,11 @@
(if (result f64)
(local.get $4)
(block (result f64)
- (i32.store
+ (i32.store offset=16
(local.get $20)
(local.tee $4
(i32.add
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
(i32.const -28)
@@ -4249,7 +4157,7 @@
)
(block (result f64)
(local.set $4
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
)
@@ -4260,8 +4168,8 @@
(local.set $6
(local.tee $7
(select
+ (local.get $46)
(local.get $47)
- (local.get $48)
(i32.lt_s
(local.get $4)
(i32.const 0)
@@ -4304,7 +4212,7 @@
(if
(i32.gt_s
(local.tee $8
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
)
@@ -4424,11 +4332,11 @@
)
)
)
- (i32.store
+ (i32.store offset=16
(local.get $20)
(local.tee $8
(i32.sub
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
(local.get $12)
@@ -4519,7 +4427,7 @@
(i32.const -1)
)
)
- (local.set $37
+ (local.set $35
(i32.shr_u
(i32.const 1000000000)
(local.get $12)
@@ -4552,7 +4460,7 @@
(local.get $8)
(local.get $11)
)
- (local.get $37)
+ (local.get $35)
)
)
(br_if $while-in74
@@ -4636,11 +4544,11 @@
)
)
)
- (i32.store
+ (i32.store offset=16
(local.get $20)
(local.tee $8
(i32.add
- (i32.load
+ (i32.load offset=16
(local.get $20)
)
(local.get $12)
@@ -4758,7 +4666,7 @@
(i32.const 103)
)
)
- (local.tee $37
+ (local.tee $35
(i32.ne
(local.get $17)
(i32.const 0)
@@ -4859,7 +4767,7 @@
(if
(i32.eqz
(i32.and
- (local.tee $49
+ (local.tee $48
(i32.eq
(i32.add
(local.get $5)
@@ -4878,7 +4786,7 @@
(if (result f64)
(i32.lt_u
(local.get $12)
- (local.tee $50
+ (local.tee $49
(i32.div_s
(local.get $11)
(i32.const 2)
@@ -4890,10 +4798,10 @@
(f64.const 1)
(f64.const 1.5)
(i32.and
- (local.get $49)
+ (local.get $48)
(i32.eq
(local.get $12)
- (local.get $50)
+ (local.get $49)
)
)
)
@@ -5142,7 +5050,7 @@
(i32.add
(local.get $17)
(i32.xor
- (local.get $37)
+ (local.get $35)
(i32.const 1)
)
)
@@ -5567,12 +5475,12 @@
(local.get $29)
)
)
- (i32.store8
- (local.get $33)
+ (i32.store8 offset=596
+ (local.get $13)
(i32.const 48)
)
(local.set $6
- (local.get $33)
+ (local.get $38)
)
)
(block
@@ -5614,7 +5522,7 @@
(call $___fwritex
(local.get $6)
(i32.sub
- (local.get $42)
+ (local.get $37)
(local.get $6)
)
(local.get $0)
@@ -5811,12 +5719,12 @@
(local.get $29)
)
(block
- (i32.store8
- (local.get $33)
+ (i32.store8 offset=596
+ (local.get $13)
(i32.const 48)
)
(local.set $4
- (local.get $33)
+ (local.get $38)
)
)
)
@@ -5900,7 +5808,7 @@
)
(local.set $7
(i32.sub
- (local.get $42)
+ (local.get $37)
(local.get $4)
)
)
@@ -6313,7 +6221,7 @@
(i32.lt_s
(local.tee $6
(call $_wctomb
- (local.get $35)
+ (local.get $33)
(local.get $8)
)
)
@@ -6398,7 +6306,7 @@
(i32.add
(local.tee $7
(call $_wctomb
- (local.get $35)
+ (local.get $33)
(local.get $7)
)
)
@@ -6419,7 +6327,7 @@
)
)
(call $___fwritex
- (local.get $35)
+ (local.get $33)
(local.get $7)
(local.get $0)
)
@@ -6510,7 +6418,7 @@
(i32.const 1)
)
(i32.sub
- (local.get $38)
+ (local.get $36)
(local.tee $4
(local.get $6)
)
@@ -6725,7 +6633,7 @@
)
)
(global.set $STACKTOP
- (local.get $34)
+ (local.get $20)
)
(local.get $16)
)
@@ -6810,8 +6718,11 @@
(local.get $0)
(local.get $1)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(i32.shr_s
(i32.shl
(i32.lt_s
@@ -6851,8 +6762,11 @@
(local.get $0)
(local.get $3)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(i32.const 0)
)
(br $label$break$L1)
@@ -6875,8 +6789,11 @@
)
)
(local.set $3
- (i32.load offset=4
- (local.get $3)
+ (i32.load
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
)
)
(i32.store
@@ -6890,8 +6807,11 @@
(local.get $0)
(local.get $5)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(local.get $3)
)
(br $label$break$L1)
@@ -6933,8 +6853,11 @@
)
)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(i32.shr_s
(i32.shl
(i32.lt_s
@@ -6977,8 +6900,11 @@
(i32.const 65535)
)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(i32.const 0)
)
(br $label$break$L1)
@@ -7020,8 +6946,11 @@
)
)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(i32.shr_s
(i32.shl
(i32.lt_s
@@ -7064,8 +6993,11 @@
(i32.const 255)
)
)
- (i32.store offset=4
- (local.get $0)
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
(i32.const 0)
)
(br $label$break$L1)
@@ -7406,569 +7338,575 @@
(local $16 i32)
(local $17 i32)
(local $18 i32)
- (local.set $0
- (if (result i32)
- (i32.lt_u
- (local.get $0)
- (i32.const 245)
- )
- (block (result i32)
- (if
- (i32.and
- (local.tee $10
- (i32.shr_u
- (local.tee $6
- (i32.load
- (i32.const 176)
+ (block $folding-inner1
+ (local.set $0
+ (if (result i32)
+ (i32.lt_u
+ (local.get $0)
+ (i32.const 245)
+ )
+ (block (result i32)
+ (if
+ (i32.and
+ (local.tee $12
+ (i32.shr_u
+ (local.tee $6
+ (i32.load
+ (i32.const 176)
+ )
)
- )
- (local.tee $13
- (i32.shr_u
- (local.tee $2
- (select
- (i32.const 16)
- (i32.and
- (i32.add
+ (local.tee $13
+ (i32.shr_u
+ (local.tee $4
+ (select
+ (i32.const 16)
+ (i32.and
+ (i32.add
+ (local.get $0)
+ (i32.const 11)
+ )
+ (i32.const -8)
+ )
+ (i32.lt_u
(local.get $0)
(i32.const 11)
)
- (i32.const -8)
- )
- (i32.lt_u
- (local.get $0)
- (i32.const 11)
)
)
+ (i32.const 3)
)
- (i32.const 3)
)
)
)
+ (i32.const 3)
)
- (i32.const 3)
- )
- (block
- (if
- (i32.eq
- (local.tee $7
- (i32.load
- (local.tee $1
- (i32.add
- (local.tee $11
- (i32.load
- (local.tee $3
- (i32.add
- (local.tee $2
+ (block
+ (if
+ (i32.eq
+ (local.tee $2
+ (i32.load offset=8
+ (local.tee $3
+ (i32.load offset=8
+ (local.tee $1
+ (i32.add
+ (i32.shl
+ (local.tee $0
(i32.add
- (i32.shl
- (local.tee $4
- (i32.add
- (i32.xor
- (i32.and
- (local.get $10)
- (i32.const 1)
- )
- (i32.const 1)
- )
- (local.get $13)
- )
+ (i32.xor
+ (i32.and
+ (local.get $12)
+ (i32.const 1)
)
- (i32.const 3)
+ (i32.const 1)
)
- (i32.const 216)
+ (local.get $13)
)
)
- (i32.const 8)
+ (i32.const 3)
)
+ (i32.const 216)
)
)
)
- (i32.const 8)
)
)
)
+ (local.get $1)
)
- (local.get $2)
- )
- (i32.store
- (i32.const 176)
- (i32.and
- (local.get $6)
- (i32.xor
- (i32.shl
- (i32.const 1)
- (local.get $4)
- )
- (i32.const -1)
- )
- )
- )
- (block
- (if
- (i32.lt_u
- (local.get $7)
- (i32.load
- (i32.const 192)
+ (i32.store
+ (i32.const 176)
+ (i32.and
+ (local.get $6)
+ (i32.xor
+ (i32.shl
+ (i32.const 1)
+ (local.get $0)
+ )
+ (i32.const -1)
)
)
- (call $_abort)
)
- (if
- (i32.eq
- (local.get $11)
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $7)
- (i32.const 12)
- )
+ (block
+ (if
+ (i32.lt_u
+ (local.get $2)
+ (i32.load
+ (i32.const 192)
)
)
+ (call $_abort)
)
- (block
- (i32.store
- (local.get $0)
- (local.get $2)
- )
- (i32.store
+ (if
+ (i32.eq
(local.get $3)
- (local.get $7)
+ (i32.load offset=12
+ (local.get $2)
+ )
)
+ (block
+ (i32.store offset=12
+ (local.get $2)
+ (local.get $1)
+ )
+ (i32.store offset=8
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+ (call $_abort)
)
- (call $_abort)
)
)
- )
- (i32.store offset=4
- (local.get $11)
- (i32.or
- (local.tee $0
- (i32.shl
- (local.get $4)
- (i32.const 3)
+ (i32.store offset=4
+ (local.get $3)
+ (i32.or
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (i32.const 3)
+ )
)
+ (i32.const 3)
)
- (i32.const 3)
)
- )
- (i32.store
- (local.tee $0
- (i32.add
+ (i32.store offset=4
+ (local.tee $0
(i32.add
(local.get $0)
- (local.get $11)
+ (local.get $3)
)
- (i32.const 4)
)
- )
- (i32.or
- (i32.load
- (local.get $0)
+ (i32.or
+ (i32.load offset=4
+ (local.get $0)
+ )
+ (i32.const 1)
)
- (i32.const 1)
)
- )
- (return
- (local.get $1)
+ (br $folding-inner1)
)
)
- )
- (if (result i32)
- (i32.gt_u
- (local.get $2)
- (local.tee $0
- (i32.load
- (i32.const 184)
+ (if (result i32)
+ (i32.gt_u
+ (local.get $4)
+ (local.tee $0
+ (i32.load
+ (i32.const 184)
+ )
)
)
- )
- (block (result i32)
- (if
- (local.get $10)
- (block
- (if
- (i32.eq
- (local.tee $8
- (i32.load
- (local.tee $4
- (i32.add
- (local.tee $10
- (i32.load
- (local.tee $3
- (i32.add
- (local.tee $7
+ (block (result i32)
+ (if
+ (local.get $12)
+ (block
+ (if
+ (i32.eq
+ (local.tee $9
+ (i32.load offset=8
+ (local.tee $11
+ (i32.load offset=8
+ (local.tee $7
+ (i32.add
+ (i32.shl
+ (local.tee $2
(i32.add
- (i32.shl
- (local.tee $11
- (i32.add
+ (i32.or
+ (i32.or
+ (i32.or
(i32.or
- (i32.or
- (i32.or
- (i32.or
- (local.tee $3
- (i32.and
- (i32.shr_u
- (local.tee $4
- (i32.add
- (i32.and
- (local.tee $3
- (i32.and
- (i32.or
- (local.tee $3
- (i32.shl
- (i32.const 2)
- (local.get $13)
- )
- )
- (i32.sub
- (i32.const 0)
- (local.get $3)
- )
- )
- (i32.shl
- (local.get $10)
- (local.get $13)
- )
+ (local.tee $2
+ (i32.and
+ (i32.shr_u
+ (local.tee $7
+ (i32.add
+ (i32.and
+ (local.tee $2
+ (i32.and
+ (i32.or
+ (local.tee $2
+ (i32.shl
+ (i32.const 2)
+ (local.get $13)
)
)
(i32.sub
(i32.const 0)
- (local.get $3)
+ (local.get $2)
)
)
- (i32.const -1)
+ (i32.shl
+ (local.get $12)
+ (local.get $13)
+ )
)
)
- (i32.const 12)
- )
- (i32.const 16)
- )
- )
- (local.tee $3
- (i32.and
- (i32.shr_u
- (local.tee $4
- (i32.shr_u
- (local.get $4)
- (local.get $3)
- )
+ (i32.sub
+ (i32.const 0)
+ (local.get $2)
)
- (i32.const 5)
)
- (i32.const 8)
+ (i32.const -1)
)
)
+ (i32.const 12)
)
- (local.tee $3
- (i32.and
+ (i32.const 16)
+ )
+ )
+ (local.tee $2
+ (i32.and
+ (i32.shr_u
+ (local.tee $7
(i32.shr_u
- (local.tee $4
- (i32.shr_u
- (local.get $4)
- (local.get $3)
- )
- )
- (i32.const 2)
+ (local.get $7)
+ (local.get $2)
)
- (i32.const 4)
)
+ (i32.const 5)
)
+ (i32.const 8)
)
- (local.tee $3
- (i32.and
+ )
+ )
+ (local.tee $2
+ (i32.and
+ (i32.shr_u
+ (local.tee $7
(i32.shr_u
- (local.tee $4
- (i32.shr_u
- (local.get $4)
- (local.get $3)
- )
- )
- (i32.const 1)
+ (local.get $7)
+ (local.get $2)
)
- (i32.const 2)
)
+ (i32.const 2)
)
+ (i32.const 4)
)
- (local.tee $3
- (i32.and
+ )
+ )
+ (local.tee $2
+ (i32.and
+ (i32.shr_u
+ (local.tee $7
(i32.shr_u
- (local.tee $4
- (i32.shr_u
- (local.get $4)
- (local.get $3)
- )
- )
- (i32.const 1)
+ (local.get $7)
+ (local.get $2)
)
- (i32.const 1)
)
+ (i32.const 1)
)
+ (i32.const 2)
)
+ )
+ )
+ (local.tee $2
+ (i32.and
(i32.shr_u
- (local.get $4)
- (local.get $3)
+ (local.tee $7
+ (i32.shr_u
+ (local.get $7)
+ (local.get $2)
+ )
+ )
+ (i32.const 1)
)
+ (i32.const 1)
)
)
- (i32.const 3)
)
- (i32.const 216)
+ (i32.shr_u
+ (local.get $7)
+ (local.get $2)
+ )
)
)
- (i32.const 8)
+ (i32.const 3)
)
+ (i32.const 216)
)
)
)
- (i32.const 8)
)
)
)
+ (local.get $7)
)
- (local.get $7)
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.and
- (local.get $6)
- (i32.xor
- (i32.shl
- (i32.const 1)
- (local.get $11)
+ (block
+ (i32.store
+ (i32.const 176)
+ (i32.and
+ (local.get $6)
+ (i32.xor
+ (i32.shl
+ (i32.const 1)
+ (local.get $2)
+ )
+ (i32.const -1)
)
- (i32.const -1)
)
)
- )
- (local.set $9
- (local.get $0)
- )
- )
- (block
- (if
- (i32.lt_u
- (local.get $8)
- (i32.load
- (i32.const 192)
- )
+ (local.set $8
+ (local.get $0)
)
- (call $_abort)
)
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $8)
- (i32.const 12)
- )
- )
- )
- (local.get $10)
- )
- (block
- (i32.store
- (local.get $0)
- (local.get $7)
- )
- (i32.store
- (local.get $3)
- (local.get $8)
- )
- (local.set $9
+ (block
+ (if
+ (i32.lt_u
+ (local.get $9)
(i32.load
- (i32.const 184)
+ (i32.const 192)
)
)
+ (call $_abort)
)
- (call $_abort)
- )
- )
- )
- (i32.store offset=4
- (local.get $10)
- (i32.or
- (local.get $2)
- (i32.const 3)
- )
- )
- (i32.store offset=4
- (local.tee $7
- (i32.add
- (local.get $2)
- (local.get $10)
- )
- )
- (i32.or
- (local.tee $11
- (i32.sub
- (i32.shl
+ (if
+ (i32.eq
+ (i32.load offset=12
+ (local.get $9)
+ )
(local.get $11)
- (i32.const 3)
)
- (local.get $2)
+ (block
+ (i32.store offset=12
+ (local.get $9)
+ (local.get $7)
+ )
+ (i32.store offset=8
+ (local.get $7)
+ (local.get $9)
+ )
+ (local.set $8
+ (i32.load
+ (i32.const 184)
+ )
+ )
+ )
+ (call $_abort)
)
)
- (i32.const 1)
)
- )
- (i32.store
- (i32.add
- (local.get $7)
+ (i32.store offset=4
(local.get $11)
+ (i32.or
+ (local.get $4)
+ (i32.const 3)
+ )
)
- (local.get $11)
- )
- (if
- (local.get $9)
- (block
- (local.set $6
- (i32.load
- (i32.const 196)
+ (i32.store offset=4
+ (local.tee $7
+ (i32.add
+ (local.get $4)
+ (local.get $11)
)
)
- (local.set $2
- (i32.add
- (i32.shl
- (local.tee $0
- (i32.shr_u
- (local.get $9)
- (i32.const 3)
- )
+ (i32.or
+ (local.tee $9
+ (i32.sub
+ (i32.shl
+ (local.get $2)
+ (i32.const 3)
)
- (i32.const 3)
+ (local.get $4)
)
- (i32.const 216)
)
+ (i32.const 1)
)
- (if
- (i32.and
- (local.tee $3
- (i32.load
- (i32.const 176)
- )
+ )
+ (i32.store
+ (i32.add
+ (local.get $7)
+ (local.get $9)
+ )
+ (local.get $9)
+ )
+ (if
+ (local.get $8)
+ (block
+ (local.set $6
+ (i32.load
+ (i32.const 196)
)
- (local.tee $0
+ )
+ (local.set $4
+ (i32.add
(i32.shl
- (i32.const 1)
- (local.get $0)
+ (local.tee $0
+ (i32.shr_u
+ (local.get $8)
+ (i32.const 3)
+ )
+ )
+ (i32.const 3)
)
+ (i32.const 216)
)
)
(if
- (i32.lt_u
- (local.tee $0
+ (i32.and
+ (local.tee $2
(i32.load
- (local.tee $3
- (i32.add
- (local.get $2)
- (i32.const 8)
- )
- )
+ (i32.const 176)
)
)
- (i32.load
- (i32.const 192)
+ (local.tee $0
+ (i32.shl
+ (i32.const 1)
+ (local.get $0)
+ )
)
)
- (call $_abort)
(block
- (local.set $5
- (local.get $3)
+ (local.set $2
+ (i32.add
+ (local.get $4)
+ (i32.const 8)
+ )
)
- (local.set $1
- (local.get $0)
+ (if
+ (i32.lt_u
+ (local.tee $0
+ (i32.load offset=8
+ (local.get $4)
+ )
+ )
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ (call $_abort)
+ (block
+ (local.set $3
+ (local.get $2)
+ )
+ (local.set $1
+ (local.get $0)
+ )
+ )
)
)
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.or
- (local.get $0)
- (local.get $3)
+ (block
+ (i32.store
+ (i32.const 176)
+ (i32.or
+ (local.get $0)
+ (local.get $2)
+ )
)
- )
- (local.set $5
- (i32.add
- (local.get $2)
- (i32.const 8)
+ (local.set $3
+ (i32.add
+ (local.get $4)
+ (i32.const 8)
+ )
+ )
+ (local.set $1
+ (local.get $4)
)
)
- (local.set $1
- (local.get $2)
+ )
+ (i32.store
+ (local.get $3)
+ (local.get $6)
+ )
+ (i32.store
+ (i32.add
+ (local.get $1)
+ (i32.const 12)
)
+ (local.get $6)
+ )
+ (i32.store offset=8
+ (local.get $6)
+ (local.get $1)
+ )
+ (i32.store offset=12
+ (local.get $6)
+ (local.get $4)
)
)
- (i32.store
- (local.get $5)
- (local.get $6)
- )
- (i32.store offset=12
- (local.get $1)
- (local.get $6)
- )
- (i32.store offset=8
- (local.get $6)
- (local.get $1)
- )
- (i32.store offset=12
- (local.get $6)
- (local.get $2)
+ )
+ (i32.store
+ (i32.const 184)
+ (local.get $9)
+ )
+ (i32.store
+ (i32.const 196)
+ (local.get $7)
+ )
+ (return
+ (i32.add
+ (local.get $11)
+ (i32.const 8)
)
)
)
- (i32.store
- (i32.const 184)
- (local.get $11)
- )
- (i32.store
- (i32.const 196)
- (local.get $7)
- )
- (return
- (local.get $4)
- )
)
- )
- (if (result i32)
- (local.tee $0
- (i32.load
- (i32.const 180)
+ (if (result i32)
+ (local.tee $0
+ (i32.load
+ (i32.const 180)
+ )
)
- )
- (block
- (local.set $11
- (i32.sub
- (i32.and
- (i32.load offset=4
- (local.tee $0
- (i32.load offset=480
- (i32.shl
+ (block
+ (local.set $7
+ (i32.sub
+ (i32.and
+ (i32.load offset=4
+ (local.tee $0
+ (i32.load
(i32.add
- (i32.or
- (i32.or
+ (i32.shl
+ (i32.add
(i32.or
(i32.or
- (local.tee $0
- (i32.and
- (i32.shr_u
- (local.tee $1
- (i32.add
- (i32.and
- (local.get $0)
- (i32.sub
- (i32.const 0)
+ (i32.or
+ (i32.or
+ (local.tee $0
+ (i32.and
+ (i32.shr_u
+ (local.tee $1
+ (i32.add
+ (i32.and
+ (local.get $0)
+ (i32.sub
+ (i32.const 0)
+ (local.get $0)
+ )
+ )
+ (i32.const -1)
+ )
+ )
+ (i32.const 12)
+ )
+ (i32.const 16)
+ )
+ )
+ (local.tee $0
+ (i32.and
+ (i32.shr_u
+ (local.tee $1
+ (i32.shr_u
+ (local.get $1)
(local.get $0)
)
)
- (i32.const -1)
+ (i32.const 5)
)
+ (i32.const 8)
)
- (i32.const 12)
)
- (i32.const 16)
+ )
+ (local.tee $0
+ (i32.and
+ (i32.shr_u
+ (local.tee $1
+ (i32.shr_u
+ (local.get $1)
+ (local.get $0)
+ )
+ )
+ (i32.const 2)
+ )
+ (i32.const 4)
+ )
)
)
(local.tee $0
@@ -7980,9 +7918,9 @@
(local.get $0)
)
)
- (i32.const 5)
+ (i32.const 1)
)
- (i32.const 8)
+ (i32.const 2)
)
)
)
@@ -7995,881 +7933,876 @@
(local.get $0)
)
)
- (i32.const 2)
- )
- (i32.const 4)
- )
- )
- )
- (local.tee $0
- (i32.and
- (i32.shr_u
- (local.tee $1
- (i32.shr_u
- (local.get $1)
- (local.get $0)
- )
+ (i32.const 1)
)
(i32.const 1)
)
- (i32.const 2)
)
)
- )
- (local.tee $0
- (i32.and
- (i32.shr_u
- (local.tee $1
- (i32.shr_u
- (local.get $1)
- (local.get $0)
- )
- )
- (i32.const 1)
- )
- (i32.const 1)
+ (i32.shr_u
+ (local.get $1)
+ (local.get $0)
)
)
+ (i32.const 2)
)
- (i32.shr_u
- (local.get $1)
- (local.get $0)
- )
+ (i32.const 480)
)
- (i32.const 2)
)
)
)
+ (i32.const -8)
)
- (i32.const -8)
+ (local.get $4)
)
- (local.get $2)
)
- )
- (local.set $7
- (local.get $0)
- )
- (loop $while-in
- (block $while-out
- (if
- (local.tee $1
- (i32.load offset=16
- (local.get $0)
- )
- )
- (local.set $0
- (local.get $1)
- )
+ (local.set $3
+ (local.tee $1
+ (local.get $0)
+ )
+ )
+ (loop $while-in
+ (block $while-out
(if
(i32.eqz
(local.tee $0
- (i32.load offset=20
- (local.get $0)
+ (i32.load
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
)
)
)
- (block
- (local.set $6
- (local.get $11)
+ (if
+ (i32.eqz
+ (local.tee $0
+ (i32.load
+ (i32.add
+ (local.get $1)
+ (i32.const 20)
+ )
+ )
+ )
)
- (local.set $8
- (local.get $7)
+ (block
+ (local.set $9
+ (local.get $7)
+ )
+ (local.set $6
+ (local.get $3)
+ )
+ (br $while-out)
)
- (br $while-out)
)
)
- )
- (local.set $6
- (i32.lt_u
- (local.tee $1
- (i32.sub
- (i32.and
- (i32.load offset=4
- (local.get $0)
+ (local.set $9
+ (i32.lt_u
+ (local.tee $1
+ (i32.sub
+ (i32.and
+ (i32.load
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
+ )
+ (i32.const -8)
)
- (i32.const -8)
+ (local.get $4)
)
- (local.get $2)
)
+ (local.get $7)
)
- (local.get $11)
)
- )
- (local.set $11
- (select
- (local.get $1)
- (local.get $11)
- (local.get $6)
+ (local.set $7
+ (select
+ (local.get $1)
+ (local.get $7)
+ (local.get $9)
+ )
)
- )
- (local.set $7
- (select
- (local.get $0)
- (local.get $7)
- (local.get $6)
+ (local.set $3
+ (select
+ (local.tee $1
+ (local.get $0)
+ )
+ (local.get $3)
+ (local.get $9)
+ )
)
+ (br $while-in)
)
- (br $while-in)
)
- )
- (if
- (i32.lt_u
- (local.get $8)
- (local.tee $10
- (i32.load
- (i32.const 192)
+ (if
+ (i32.lt_u
+ (local.get $6)
+ (local.tee $11
+ (i32.load
+ (i32.const 192)
+ )
)
)
+ (call $_abort)
)
- (call $_abort)
- )
- (if
- (i32.ge_u
- (local.get $8)
- (local.tee $5
- (i32.add
- (local.get $2)
- (local.get $8)
+ (if
+ (i32.ge_u
+ (local.get $6)
+ (local.tee $12
+ (i32.add
+ (local.get $4)
+ (local.get $6)
+ )
)
)
+ (call $_abort)
)
- (call $_abort)
- )
- (local.set $9
- (i32.load offset=24
- (local.get $8)
+ (local.set $8
+ (i32.load offset=24
+ (local.get $6)
+ )
)
- )
- (if
- (i32.eq
- (local.tee $0
- (i32.load offset=12
- (local.get $8)
+ (if
+ (i32.eq
+ (local.tee $0
+ (i32.load offset=12
+ (local.get $6)
+ )
)
+ (local.get $6)
)
- (local.get $8)
- )
- (block $do-once4
- (if
- (i32.eqz
- (local.tee $1
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $8)
- (i32.const 20)
- )
- )
- )
+ (block $do-once4
+ (local.set $0
+ (i32.add
+ (local.get $6)
+ (i32.const 20)
)
)
- (br_if $do-once4
+ (if
(i32.eqz
(local.tee $1
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $8)
- (i32.const 16)
+ (i32.load offset=20
+ (local.get $6)
+ )
+ )
+ )
+ (block
+ (local.set $0
+ (i32.add
+ (local.get $6)
+ (i32.const 16)
+ )
+ )
+ (br_if $do-once4
+ (i32.eqz
+ (local.tee $1
+ (i32.load offset=16
+ (local.get $6)
)
)
)
)
)
)
- )
- (loop $while-in7
- (if
- (local.tee $7
- (i32.load
- (local.tee $11
- (i32.add
- (local.get $1)
- (i32.const 20)
+ (loop $while-in7
+ (if
+ (local.tee $3
+ (i32.load
+ (local.tee $7
+ (i32.add
+ (local.get $1)
+ (i32.const 20)
+ )
)
)
)
- )
- (block
- (local.set $1
- (local.get $7)
- )
- (local.set $0
- (local.get $11)
+ (block
+ (local.set $1
+ (local.get $3)
+ )
+ (local.set $0
+ (local.get $7)
+ )
+ (br $while-in7)
)
- (br $while-in7)
)
- )
- (if
- (local.tee $7
- (i32.load
- (local.tee $11
- (i32.add
- (local.get $1)
- (i32.const 16)
+ (if
+ (local.tee $3
+ (i32.load
+ (local.tee $7
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
)
)
)
- )
- (block
- (local.set $1
- (local.get $7)
- )
- (local.set $0
- (local.get $11)
+ (block
+ (local.set $1
+ (local.get $3)
+ )
+ (local.set $0
+ (local.get $7)
+ )
+ (br $while-in7)
)
- (br $while-in7)
)
)
- )
- (if
- (i32.lt_u
- (local.get $0)
- (local.get $10)
- )
- (call $_abort)
- (block
- (i32.store
+ (if
+ (i32.lt_u
(local.get $0)
- (i32.const 0)
- )
- (local.set $4
- (local.get $1)
+ (local.get $11)
)
- )
- )
- )
- (block
- (if
- (i32.lt_u
- (local.tee $11
- (i32.load offset=8
- (local.get $8)
+ (call $_abort)
+ (block
+ (i32.store
+ (local.get $0)
+ (i32.const 0)
)
- )
- (local.get $10)
- )
- (call $_abort)
- )
- (if
- (i32.ne
- (local.get $8)
- (i32.load
- (local.tee $7
- (i32.add
- (local.get $11)
- (i32.const 12)
- )
+ (local.set $10
+ (local.get $1)
)
)
)
- (call $_abort)
)
- (if
- (i32.eq
- (i32.load
+ (block
+ (if
+ (i32.lt_u
(local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 8)
+ (i32.load offset=8
+ (local.get $6)
)
)
+ (local.get $11)
)
- (local.get $8)
+ (call $_abort)
)
- (block
- (i32.store
- (local.get $7)
- (local.get $0)
+ (if
+ (i32.ne
+ (local.get $6)
+ (i32.load offset=12
+ (local.get $1)
+ )
)
- (i32.store
- (local.get $1)
- (local.get $11)
+ (call $_abort)
+ )
+ (if
+ (i32.eq
+ (i32.load offset=8
+ (local.get $0)
+ )
+ (local.get $6)
)
- (local.set $4
- (local.get $0)
+ (block
+ (i32.store offset=12
+ (local.get $1)
+ (local.get $0)
+ )
+ (i32.store offset=8
+ (local.get $0)
+ (local.get $1)
+ )
+ (local.set $10
+ (local.get $0)
+ )
)
+ (call $_abort)
)
- (call $_abort)
)
)
- )
- (if
- (local.get $9)
- (block $do-once8
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (i32.shl
- (local.tee $1
- (i32.load offset=28
- (local.get $8)
+ (if
+ (local.get $8)
+ (block $do-once8
+ (if
+ (i32.eq
+ (i32.load
+ (local.tee $0
+ (i32.add
+ (i32.shl
+ (local.tee $1
+ (i32.load offset=28
+ (local.get $6)
+ )
)
+ (i32.const 2)
)
- (i32.const 2)
+ (i32.const 480)
)
- (i32.const 480)
)
)
+ (local.get $6)
)
- (local.get $8)
- )
- (block
- (i32.store
- (local.get $0)
- (local.get $4)
- )
- (if
- (i32.eqz
- (local.get $4)
+ (block
+ (i32.store
+ (local.get $0)
+ (local.get $10)
)
- (block
- (i32.store
- (i32.const 180)
- (i32.and
- (i32.load
- (i32.const 180)
- )
- (i32.xor
- (i32.shl
- (i32.const 1)
- (local.get $1)
+ (if
+ (i32.eqz
+ (local.get $10)
+ )
+ (block
+ (i32.store
+ (i32.const 180)
+ (i32.and
+ (i32.load
+ (i32.const 180)
+ )
+ (i32.xor
+ (i32.shl
+ (i32.const 1)
+ (local.get $1)
+ )
+ (i32.const -1)
)
- (i32.const -1)
)
)
+ (br $do-once8)
)
- (br $do-once8)
)
)
- )
- (block
- (if
- (i32.lt_u
- (local.get $9)
- (i32.load
- (i32.const 192)
+ (block
+ (if
+ (i32.lt_u
+ (local.get $8)
+ (i32.load
+ (i32.const 192)
+ )
)
+ (call $_abort)
)
- (call $_abort)
- )
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $9)
- (i32.const 16)
- )
+ (if
+ (i32.eq
+ (i32.load offset=16
+ (local.get $8)
)
+ (local.get $6)
+ )
+ (i32.store offset=16
+ (local.get $8)
+ (local.get $10)
+ )
+ (i32.store offset=20
+ (local.get $8)
+ (local.get $10)
)
- (local.get $8)
- )
- (i32.store
- (local.get $0)
- (local.get $4)
- )
- (i32.store offset=20
- (local.get $9)
- (local.get $4)
)
- )
- (br_if $do-once8
- (i32.eqz
- (local.get $4)
+ (br_if $do-once8
+ (i32.eqz
+ (local.get $10)
+ )
)
)
)
- )
- (if
- (i32.lt_u
- (local.get $4)
- (local.tee $0
- (i32.load
- (i32.const 192)
+ (if
+ (i32.lt_u
+ (local.get $10)
+ (local.tee $0
+ (i32.load
+ (i32.const 192)
+ )
)
)
+ (call $_abort)
)
- (call $_abort)
- )
- (i32.store offset=24
- (local.get $4)
- (local.get $9)
- )
- (if
- (local.tee $1
- (i32.load offset=16
- (local.get $8)
+ (i32.store
+ (i32.add
+ (local.get $10)
+ (i32.const 24)
)
+ (local.get $8)
)
(if
- (i32.lt_u
- (local.get $1)
- (local.get $0)
+ (local.tee $1
+ (i32.load offset=16
+ (local.get $6)
+ )
)
- (call $_abort)
- (block
- (i32.store offset=16
- (local.get $4)
+ (if
+ (i32.lt_u
(local.get $1)
+ (local.get $0)
)
- (i32.store offset=24
- (local.get $1)
- (local.get $4)
+ (call $_abort)
+ (block
+ (i32.store
+ (i32.add
+ (local.get $10)
+ (i32.const 16)
+ )
+ (local.get $1)
+ )
+ (i32.store offset=24
+ (local.get $1)
+ (local.get $10)
+ )
)
)
)
- )
- (if
- (local.tee $0
- (i32.load offset=20
- (local.get $8)
- )
- )
(if
- (i32.lt_u
- (local.get $0)
- (i32.load
- (i32.const 192)
+ (local.tee $0
+ (i32.load offset=20
+ (local.get $6)
)
)
- (call $_abort)
- (block
- (i32.store offset=20
- (local.get $4)
+ (if
+ (i32.lt_u
(local.get $0)
+ (i32.load
+ (i32.const 192)
+ )
)
- (i32.store offset=24
- (local.get $0)
- (local.get $4)
+ (call $_abort)
+ (block
+ (i32.store
+ (i32.add
+ (local.get $10)
+ (i32.const 20)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=24
+ (local.get $0)
+ (local.get $10)
+ )
)
)
)
)
)
- )
- (if
- (i32.lt_u
- (local.get $6)
- (i32.const 16)
- )
- (block
- (i32.store offset=4
- (local.get $8)
- (i32.or
- (local.tee $0
- (i32.add
- (local.get $2)
- (local.get $6)
+ (if
+ (i32.lt_u
+ (local.get $9)
+ (i32.const 16)
+ )
+ (block
+ (i32.store offset=4
+ (local.get $6)
+ (i32.or
+ (local.tee $0
+ (i32.add
+ (local.get $4)
+ (local.get $9)
+ )
)
+ (i32.const 3)
)
- (i32.const 3)
)
- )
- (i32.store
- (local.tee $0
- (i32.add
+ (i32.store offset=4
+ (local.tee $0
(i32.add
(local.get $0)
- (local.get $8)
+ (local.get $6)
)
- (i32.const 4)
)
- )
- (i32.or
- (i32.load
- (local.get $0)
+ (i32.or
+ (i32.load offset=4
+ (local.get $0)
+ )
+ (i32.const 1)
)
- (i32.const 1)
)
)
- )
- (block
- (i32.store offset=4
- (local.get $8)
- (i32.or
- (local.get $2)
- (i32.const 3)
- )
- )
- (i32.store offset=4
- (local.get $5)
- (i32.or
+ (block
+ (i32.store offset=4
(local.get $6)
- (i32.const 1)
+ (i32.or
+ (local.get $4)
+ (i32.const 3)
+ )
)
- )
- (i32.store
- (i32.add
- (local.get $5)
- (local.get $6)
+ (i32.store offset=4
+ (local.get $12)
+ (i32.or
+ (local.get $9)
+ (i32.const 1)
+ )
)
- (local.get $6)
- )
- (if
- (local.tee $0
- (i32.load
- (i32.const 184)
+ (i32.store
+ (i32.add
+ (local.get $9)
+ (local.get $12)
)
+ (local.get $9)
)
- (block
- (local.set $4
+ (if
+ (local.tee $0
(i32.load
- (i32.const 196)
+ (i32.const 184)
)
)
- (local.set $2
- (i32.add
- (i32.shl
- (local.tee $0
- (i32.shr_u
- (local.get $0)
- (i32.const 3)
- )
- )
- (i32.const 3)
+ (block
+ (local.set $4
+ (i32.load
+ (i32.const 196)
)
- (i32.const 216)
)
- )
- (if
- (i32.and
- (local.tee $1
- (i32.load
- (i32.const 176)
- )
- )
- (local.tee $0
+ (local.set $3
+ (i32.add
(i32.shl
- (i32.const 1)
- (local.get $0)
+ (local.tee $0
+ (i32.shr_u
+ (local.get $0)
+ (i32.const 3)
+ )
+ )
+ (i32.const 3)
)
+ (i32.const 216)
)
)
(if
- (i32.lt_u
- (local.tee $0
+ (i32.and
+ (local.tee $1
(i32.load
- (local.tee $1
- (i32.add
- (local.get $2)
- (i32.const 8)
- )
- )
+ (i32.const 176)
)
)
- (i32.load
- (i32.const 192)
+ (local.tee $0
+ (i32.shl
+ (i32.const 1)
+ (local.get $0)
+ )
)
)
- (call $_abort)
(block
- (local.set $12
- (local.get $1)
+ (local.set $1
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
)
- (local.set $3
- (local.get $0)
+ (if
+ (i32.lt_u
+ (local.tee $0
+ (i32.load offset=8
+ (local.get $3)
+ )
+ )
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ (call $_abort)
+ (block
+ (local.set $5
+ (local.get $1)
+ )
+ (local.set $2
+ (local.get $0)
+ )
+ )
)
)
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.or
- (local.get $0)
- (local.get $1)
+ (block
+ (i32.store
+ (i32.const 176)
+ (i32.or
+ (local.get $0)
+ (local.get $1)
+ )
)
- )
- (local.set $12
- (i32.add
- (local.get $2)
- (i32.const 8)
+ (local.set $5
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ )
+ (local.set $2
+ (local.get $3)
)
)
- (local.set $3
+ )
+ (i32.store
+ (local.get $5)
+ (local.get $4)
+ )
+ (i32.store
+ (i32.add
(local.get $2)
+ (i32.const 12)
)
+ (local.get $4)
+ )
+ (i32.store offset=8
+ (local.get $4)
+ (local.get $2)
+ )
+ (i32.store offset=12
+ (local.get $4)
+ (local.get $3)
)
)
- (i32.store
- (local.get $12)
- (local.get $4)
- )
- (i32.store offset=12
- (local.get $3)
- (local.get $4)
- )
- (i32.store offset=8
- (local.get $4)
- (local.get $3)
- )
- (i32.store offset=12
- (local.get $4)
- (local.get $2)
- )
+ )
+ (i32.store
+ (i32.const 184)
+ (local.get $9)
+ )
+ (i32.store
+ (i32.const 196)
+ (local.get $12)
)
)
- (i32.store
- (i32.const 184)
+ )
+ (return
+ (i32.add
(local.get $6)
+ (i32.const 8)
)
- (i32.store
- (i32.const 196)
- (local.get $5)
- )
- )
- )
- (return
- (i32.add
- (local.get $8)
- (i32.const 8)
)
)
+ (local.get $4)
)
- (local.get $2)
)
+ (local.get $4)
)
- (local.get $2)
- )
- )
- (if (result i32)
- (i32.gt_u
- (local.get $0)
- (i32.const -65)
)
- (i32.const -1)
- (block $do-once (result i32)
- (local.set $2
- (i32.and
- (local.tee $0
- (i32.add
- (local.get $0)
- (i32.const 11)
+ (if (result i32)
+ (i32.gt_u
+ (local.get $0)
+ (i32.const -65)
+ )
+ (i32.const -1)
+ (block $do-once (result i32)
+ (local.set $3
+ (i32.and
+ (local.tee $0
+ (i32.add
+ (local.get $0)
+ (i32.const 11)
+ )
)
+ (i32.const -8)
)
- (i32.const -8)
)
- )
- (if (result i32)
- (local.tee $18
- (i32.load
- (i32.const 180)
+ (if (result i32)
+ (local.tee $18
+ (i32.load
+ (i32.const 180)
+ )
)
- )
- (block (result i32)
- (local.set $14
- (if (result i32)
- (local.tee $0
- (i32.shr_u
- (local.get $0)
- (i32.const 8)
- )
- )
+ (block (result i32)
+ (local.set $14
(if (result i32)
- (i32.gt_u
- (local.get $2)
- (i32.const 16777215)
+ (local.tee $0
+ (i32.shr_u
+ (local.get $0)
+ (i32.const 8)
+ )
)
- (i32.const 31)
- (block (result i32)
- (local.set $4
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $0
- (i32.shl
- (local.get $0)
- (local.tee $1
- (i32.and
- (i32.shr_u
- (i32.add
- (local.get $0)
- (i32.const 1048320)
+ (if (result i32)
+ (i32.gt_u
+ (local.get $3)
+ (i32.const 16777215)
+ )
+ (i32.const 31)
+ (block (result i32)
+ (local.set $4
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (local.tee $1
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.get $0)
+ (i32.const 1048320)
+ )
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 8)
)
- (i32.const 8)
)
)
)
+ (i32.const 520192)
)
- (i32.const 520192)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 4)
)
- (i32.const 4)
)
- )
- (local.set $3
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $0
- (i32.shl
- (local.get $0)
- (local.get $4)
+ (local.set $2
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (local.get $4)
+ )
)
+ (i32.const 245760)
)
- (i32.const 245760)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 2)
)
- (i32.const 2)
)
- )
- (i32.or
- (i32.and
- (i32.shr_u
- (local.get $2)
- (i32.add
- (local.tee $0
- (i32.add
- (i32.sub
- (i32.const 14)
- (i32.or
+ (i32.or
+ (i32.and
+ (i32.shr_u
+ (local.get $3)
+ (i32.add
+ (local.tee $0
+ (i32.add
+ (i32.sub
+ (i32.const 14)
(i32.or
- (local.get $1)
- (local.get $4)
+ (i32.or
+ (local.get $1)
+ (local.get $4)
+ )
+ (local.get $2)
)
- (local.get $3)
)
- )
- (i32.shr_u
- (i32.shl
- (local.get $0)
- (local.get $3)
+ (i32.shr_u
+ (i32.shl
+ (local.get $0)
+ (local.get $2)
+ )
+ (i32.const 15)
)
- (i32.const 15)
)
)
+ (i32.const 7)
)
- (i32.const 7)
)
+ (i32.const 1)
+ )
+ (i32.shl
+ (local.get $0)
+ (i32.const 1)
)
- (i32.const 1)
- )
- (i32.shl
- (local.get $0)
- (i32.const 1)
)
)
)
+ (i32.const 0)
)
- (i32.const 0)
)
- )
- (local.set $3
- (i32.sub
- (i32.const 0)
- (local.get $2)
+ (local.set $2
+ (i32.sub
+ (i32.const 0)
+ (local.get $3)
+ )
)
- )
- (block $__rjto$3
- (block $__rjti$3
- (local.set $0
- (if (result i32)
- (local.tee $0
- (i32.load offset=480
- (i32.shl
- (local.get $14)
- (i32.const 2)
+ (block $__rjto$3
+ (block $__rjti$3
+ (local.set $0
+ (if (result i32)
+ (local.tee $0
+ (i32.load
+ (i32.add
+ (i32.shl
+ (local.get $14)
+ (i32.const 2)
+ )
+ (i32.const 480)
+ )
)
)
- )
- (block (result i32)
- (local.set $9
- (i32.shl
- (local.get $2)
- (select
- (i32.const 0)
- (i32.sub
- (i32.const 25)
- (i32.shr_u
+ (block (result i32)
+ (local.set $8
+ (i32.shl
+ (local.get $3)
+ (select
+ (i32.const 0)
+ (i32.sub
+ (i32.const 25)
+ (i32.shr_u
+ (local.get $14)
+ (i32.const 1)
+ )
+ )
+ (i32.eq
(local.get $14)
- (i32.const 1)
+ (i32.const 31)
)
)
- (i32.eq
- (local.get $14)
- (i32.const 31)
- )
)
)
- )
- (local.set $1
- (i32.const 0)
- )
- (loop $while-in14 (result i32)
- (if
- (i32.lt_u
- (local.tee $4
- (i32.sub
- (local.tee $12
- (i32.and
- (i32.load offset=4
- (local.get $0)
+ (local.set $1
+ (i32.const 0)
+ )
+ (loop $while-in14 (result i32)
+ (if
+ (i32.lt_u
+ (local.tee $4
+ (i32.sub
+ (local.tee $10
+ (i32.and
+ (i32.load
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
+ )
+ (i32.const -8)
)
- (i32.const -8)
)
+ (local.get $3)
)
- (local.get $2)
)
+ (local.get $2)
)
- (local.get $3)
- )
- (local.set $1
- (if (result i32)
- (i32.eq
- (local.get $2)
- (local.get $12)
- )
- (block
- (local.set $1
- (local.get $4)
+ (local.set $1
+ (if (result i32)
+ (i32.eq
+ (local.get $3)
+ (local.get $10)
)
- (local.set $3
- (local.get $0)
+ (block
+ (local.set $1
+ (local.get $4)
+ )
+ (local.set $2
+ (local.get $0)
+ )
+ (br $__rjti$3)
)
- (br $__rjti$3)
- )
- (block (result i32)
- (local.set $3
- (local.get $4)
+ (block (result i32)
+ (local.set $2
+ (local.get $4)
+ )
+ (local.get $0)
)
- (local.get $0)
)
)
)
- )
- (local.set $0
- (select
- (local.get $5)
- (local.tee $4
- (i32.load offset=20
- (local.get $0)
- )
- )
- (i32.or
- (i32.eqz
- (local.get $4)
+ (local.set $0
+ (select
+ (local.get $5)
+ (local.tee $4
+ (i32.load
+ (i32.add
+ (local.get $0)
+ (i32.const 20)
+ )
+ )
)
- (i32.eq
- (local.get $4)
- (local.tee $12
- (i32.load
- (i32.add
+ (i32.or
+ (i32.eqz
+ (local.get $4)
+ )
+ (i32.eq
+ (local.get $4)
+ (local.tee $10
+ (i32.load
(i32.add
- (local.get $0)
- (i32.const 16)
- )
- (i32.shl
- (i32.shr_u
- (local.get $9)
- (i32.const 31)
+ (i32.add
+ (local.get $0)
+ (i32.const 16)
+ )
+ (i32.shl
+ (i32.shr_u
+ (local.get $8)
+ (i32.const 31)
+ )
+ (i32.const 2)
)
- (i32.const 2)
)
)
)
@@ -8877,109 +8810,139 @@
)
)
)
- )
- (local.set $4
- (i32.shl
- (local.get $9)
- (i32.xor
- (local.tee $5
- (i32.eqz
- (local.get $12)
+ (local.set $4
+ (i32.shl
+ (local.get $8)
+ (i32.xor
+ (local.tee $5
+ (i32.eqz
+ (local.get $10)
+ )
)
+ (i32.const 1)
)
- (i32.const 1)
- )
- )
- )
- (if (result i32)
- (local.get $5)
- (block (result i32)
- (local.set $4
- (local.get $0)
)
- (local.get $1)
)
- (block
- (local.set $5
- (local.get $0)
- )
- (local.set $9
- (local.get $4)
+ (if (result i32)
+ (local.get $5)
+ (block (result i32)
+ (local.set $4
+ (local.get $0)
+ )
+ (local.get $1)
)
- (local.set $0
- (local.get $12)
+ (block
+ (local.set $5
+ (local.get $0)
+ )
+ (local.set $8
+ (local.get $4)
+ )
+ (local.set $0
+ (local.get $10)
+ )
+ (br $while-in14)
)
- (br $while-in14)
)
)
)
- )
- (block (result i32)
- (local.set $4
+ (block (result i32)
+ (local.set $4
+ (i32.const 0)
+ )
(i32.const 0)
)
- (i32.const 0)
)
)
- )
- (if
- (i32.eqz
- (i32.or
- (local.get $0)
- (local.get $4)
+ (if
+ (i32.eqz
+ (i32.or
+ (local.get $0)
+ (local.get $4)
+ )
)
- )
- (block
- (drop
- (br_if $do-once
- (local.get $2)
- (i32.eqz
- (local.tee $1
- (i32.and
- (local.get $18)
- (i32.or
- (local.tee $1
- (i32.shl
- (i32.const 2)
- (local.get $14)
+ (block
+ (drop
+ (br_if $do-once
+ (local.get $3)
+ (i32.eqz
+ (local.tee $1
+ (i32.and
+ (local.get $18)
+ (i32.or
+ (local.tee $1
+ (i32.shl
+ (i32.const 2)
+ (local.get $14)
+ )
+ )
+ (i32.sub
+ (i32.const 0)
+ (local.get $1)
)
- )
- (i32.sub
- (i32.const 0)
- (local.get $1)
)
)
)
)
)
)
- )
- (local.set $4
- (i32.load offset=480
- (i32.shl
+ (local.set $4
+ (i32.load
(i32.add
- (i32.or
- (i32.or
+ (i32.shl
+ (i32.add
(i32.or
(i32.or
- (local.tee $1
- (i32.and
- (i32.shr_u
- (local.tee $4
- (i32.add
- (i32.and
- (local.get $1)
- (i32.sub
- (i32.const 0)
+ (i32.or
+ (i32.or
+ (local.tee $1
+ (i32.and
+ (i32.shr_u
+ (local.tee $4
+ (i32.add
+ (i32.and
+ (local.get $1)
+ (i32.sub
+ (i32.const 0)
+ (local.get $1)
+ )
+ )
+ (i32.const -1)
+ )
+ )
+ (i32.const 12)
+ )
+ (i32.const 16)
+ )
+ )
+ (local.tee $1
+ (i32.and
+ (i32.shr_u
+ (local.tee $4
+ (i32.shr_u
+ (local.get $4)
(local.get $1)
)
)
- (i32.const -1)
+ (i32.const 5)
)
+ (i32.const 8)
)
- (i32.const 12)
)
- (i32.const 16)
+ )
+ (local.tee $1
+ (i32.and
+ (i32.shr_u
+ (local.tee $4
+ (i32.shr_u
+ (local.get $4)
+ (local.get $1)
+ )
+ )
+ (i32.const 2)
+ )
+ (i32.const 4)
+ )
)
)
(local.tee $1
@@ -8991,9 +8954,9 @@
(local.get $1)
)
)
- (i32.const 5)
+ (i32.const 1)
)
- (i32.const 8)
+ (i32.const 2)
)
)
)
@@ -9006,1889 +8969,1852 @@
(local.get $1)
)
)
- (i32.const 2)
- )
- (i32.const 4)
- )
- )
- )
- (local.tee $1
- (i32.and
- (i32.shr_u
- (local.tee $4
- (i32.shr_u
- (local.get $4)
- (local.get $1)
- )
+ (i32.const 1)
)
(i32.const 1)
)
- (i32.const 2)
)
)
- )
- (local.tee $1
- (i32.and
- (i32.shr_u
- (local.tee $4
- (i32.shr_u
- (local.get $4)
- (local.get $1)
- )
- )
- (i32.const 1)
- )
- (i32.const 1)
+ (i32.shr_u
+ (local.get $4)
+ (local.get $1)
)
)
+ (i32.const 2)
)
- (i32.shr_u
- (local.get $4)
- (local.get $1)
- )
+ (i32.const 480)
)
- (i32.const 2)
)
)
)
)
- )
- (local.set $4
- (if (result i32)
- (local.get $4)
- (block
- (local.set $1
- (local.get $3)
- )
- (local.set $3
- (local.get $4)
+ (local.set $4
+ (if (result i32)
+ (local.get $4)
+ (block
+ (local.set $1
+ (local.get $2)
+ )
+ (local.set $2
+ (local.get $4)
+ )
+ (br $__rjti$3)
)
- (br $__rjti$3)
+ (local.get $0)
)
- (local.get $0)
)
+ (br $__rjto$3)
)
- (br $__rjto$3)
- )
- (local.set $3
- (loop $while-in16 (result i32)
- (local.set $12
- (i32.lt_u
- (local.tee $4
- (i32.sub
- (i32.and
- (i32.load offset=4
- (local.get $3)
+ (local.set $2
+ (loop $while-in16 (result i32)
+ (local.set $10
+ (i32.lt_u
+ (local.tee $4
+ (i32.sub
+ (i32.and
+ (i32.load
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ )
+ (i32.const -8)
)
- (i32.const -8)
+ (local.get $3)
)
- (local.get $2)
)
+ (local.get $1)
)
- (local.get $1)
)
- )
- (local.set $1
- (select
- (local.get $4)
- (local.get $1)
- (local.get $12)
- )
- )
- (local.set $0
- (select
- (local.get $3)
- (local.get $0)
- (local.get $12)
+ (local.set $1
+ (select
+ (local.get $4)
+ (local.get $1)
+ (local.get $10)
+ )
)
- )
- (if
- (local.tee $4
- (i32.load offset=16
- (local.get $3)
+ (local.set $0
+ (select
+ (local.get $2)
+ (local.get $0)
+ (local.get $10)
)
)
- (block
- (local.set $3
- (local.get $4)
+ (if
+ (local.tee $4
+ (i32.load
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ )
+ )
+ (block
+ (local.set $2
+ (local.get $4)
+ )
+ (br $while-in16)
)
- (br $while-in16)
)
- )
- (br_if $while-in16
- (local.tee $3
- (i32.load offset=20
- (local.get $3)
+ (br_if $while-in16
+ (local.tee $2
+ (i32.load
+ (i32.add
+ (local.get $2)
+ (i32.const 20)
+ )
+ )
)
)
+ (local.set $4
+ (local.get $0)
+ )
+ (local.get $1)
)
- (local.set $4
- (local.get $0)
- )
- (local.get $1)
)
)
- )
- (if (result i32)
- (local.get $4)
(if (result i32)
- (i32.lt_u
- (local.get $3)
- (i32.sub
- (i32.load
- (i32.const 184)
- )
+ (local.get $4)
+ (if (result i32)
+ (i32.lt_u
(local.get $2)
- )
- )
- (block
- (if
- (i32.lt_u
- (local.get $4)
- (local.tee $8
- (i32.load
- (i32.const 192)
- )
+ (i32.sub
+ (i32.load
+ (i32.const 184)
)
+ (local.get $3)
)
- (call $_abort)
)
- (if
- (i32.ge_u
- (local.get $4)
- (local.tee $5
- (i32.add
- (local.get $2)
- (local.get $4)
+ (block
+ (if
+ (i32.lt_u
+ (local.get $4)
+ (local.tee $11
+ (i32.load
+ (i32.const 192)
+ )
)
)
+ (call $_abort)
)
- (call $_abort)
- )
- (local.set $12
- (i32.load offset=24
- (local.get $4)
+ (if
+ (i32.ge_u
+ (local.get $4)
+ (local.tee $5
+ (i32.add
+ (local.get $3)
+ (local.get $4)
+ )
+ )
+ )
+ (call $_abort)
)
- )
- (if
- (i32.eq
- (local.tee $0
- (i32.load offset=12
+ (local.set $10
+ (i32.load
+ (i32.add
(local.get $4)
+ (i32.const 24)
)
)
- (local.get $4)
)
- (block $do-once17
- (if
- (i32.eqz
- (local.tee $1
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $4)
- (i32.const 20)
- )
- )
+ (if
+ (i32.eq
+ (local.tee $0
+ (i32.load
+ (i32.add
+ (local.get $4)
+ (i32.const 12)
)
)
)
- (br_if $do-once17
+ (local.get $4)
+ )
+ (block $do-once17
+ (if
(i32.eqz
(local.tee $1
(i32.load
(local.tee $0
(i32.add
(local.get $4)
- (i32.const 16)
+ (i32.const 20)
)
)
)
)
)
- )
- )
- (loop $while-in20
- (if
- (local.tee $7
- (i32.load
- (local.tee $11
- (i32.add
- (local.get $1)
- (i32.const 20)
+ (br_if $do-once17
+ (i32.eqz
+ (local.tee $1
+ (i32.load
+ (local.tee $0
+ (i32.add
+ (local.get $4)
+ (i32.const 16)
+ )
+ )
)
)
)
)
- (block
- (local.set $1
- (local.get $7)
- )
- (local.set $0
- (local.get $11)
- )
- (br $while-in20)
- )
)
- (if
- (local.tee $7
- (i32.load
- (local.tee $11
- (i32.add
- (local.get $1)
- (i32.const 16)
+ (loop $while-in20
+ (if
+ (local.tee $7
+ (i32.load
+ (local.tee $9
+ (i32.add
+ (local.get $1)
+ (i32.const 20)
+ )
)
)
)
+ (block
+ (local.set $1
+ (local.get $7)
+ )
+ (local.set $0
+ (local.get $9)
+ )
+ (br $while-in20)
+ )
)
- (block
- (local.set $1
- (local.get $7)
+ (if
+ (local.tee $7
+ (i32.load
+ (local.tee $9
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
+ )
+ )
)
- (local.set $0
- (local.get $11)
+ (block
+ (local.set $1
+ (local.get $7)
+ )
+ (local.set $0
+ (local.get $9)
+ )
+ (br $while-in20)
)
- (br $while-in20)
)
)
- )
- (if
- (i32.lt_u
- (local.get $0)
- (local.get $8)
- )
- (call $_abort)
- (block
- (i32.store
+ (if
+ (i32.lt_u
(local.get $0)
- (i32.const 0)
- )
- (local.set $10
- (local.get $1)
+ (local.get $11)
)
- )
- )
- )
- (block
- (if
- (i32.lt_u
- (local.tee $11
- (i32.load offset=8
- (local.get $4)
+ (call $_abort)
+ (block
+ (i32.store
+ (local.get $0)
+ (i32.const 0)
)
- )
- (local.get $8)
- )
- (call $_abort)
- )
- (if
- (i32.ne
- (local.get $4)
- (i32.load
- (local.tee $7
- (i32.add
- (local.get $11)
- (i32.const 12)
- )
+ (local.set $12
+ (local.get $1)
)
)
)
- (call $_abort)
)
- (if
- (i32.eq
- (i32.load
+ (block
+ (if
+ (i32.lt_u
(local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 8)
+ (i32.load
+ (i32.add
+ (local.get $4)
+ (i32.const 8)
+ )
)
)
+ (local.get $11)
)
- (local.get $4)
+ (call $_abort)
)
- (block
- (i32.store
- (local.get $7)
- (local.get $0)
+ (if
+ (i32.ne
+ (local.get $4)
+ (i32.load offset=12
+ (local.get $1)
+ )
)
- (i32.store
- (local.get $1)
- (local.get $11)
+ (call $_abort)
+ )
+ (if
+ (i32.eq
+ (i32.load offset=8
+ (local.get $0)
+ )
+ (local.get $4)
)
- (local.set $10
- (local.get $0)
+ (block
+ (i32.store offset=12
+ (local.get $1)
+ (local.get $0)
+ )
+ (i32.store offset=8
+ (local.get $0)
+ (local.get $1)
+ )
+ (local.set $12
+ (local.get $0)
+ )
)
+ (call $_abort)
)
- (call $_abort)
)
)
- )
- (if
- (local.get $12)
- (block $do-once21
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (i32.shl
- (local.tee $1
- (i32.load offset=28
- (local.get $4)
+ (if
+ (local.get $10)
+ (block $do-once21
+ (if
+ (i32.eq
+ (i32.load
+ (local.tee $0
+ (i32.add
+ (i32.shl
+ (local.tee $1
+ (i32.load
+ (i32.add
+ (local.get $4)
+ (i32.const 28)
+ )
+ )
)
+ (i32.const 2)
)
- (i32.const 2)
+ (i32.const 480)
)
- (i32.const 480)
)
)
+ (local.get $4)
)
- (local.get $4)
- )
- (block
- (i32.store
- (local.get $0)
- (local.get $10)
- )
- (if
- (i32.eqz
- (local.get $10)
+ (block
+ (i32.store
+ (local.get $0)
+ (local.get $12)
)
- (block
- (i32.store
- (i32.const 180)
- (i32.and
- (i32.load
- (i32.const 180)
- )
- (i32.xor
- (i32.shl
- (i32.const 1)
- (local.get $1)
+ (if
+ (i32.eqz
+ (local.get $12)
+ )
+ (block
+ (i32.store
+ (i32.const 180)
+ (i32.and
+ (i32.load
+ (i32.const 180)
+ )
+ (i32.xor
+ (i32.shl
+ (i32.const 1)
+ (local.get $1)
+ )
+ (i32.const -1)
)
- (i32.const -1)
)
)
+ (br $do-once21)
)
- (br $do-once21)
)
)
- )
- (block
- (if
- (i32.lt_u
- (local.get $12)
- (i32.load
- (i32.const 192)
+ (block
+ (if
+ (i32.lt_u
+ (local.get $10)
+ (i32.load
+ (i32.const 192)
+ )
)
+ (call $_abort)
)
- (call $_abort)
- )
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $12)
- (i32.const 16)
- )
+ (if
+ (i32.eq
+ (i32.load offset=16
+ (local.get $10)
)
+ (local.get $4)
+ )
+ (i32.store offset=16
+ (local.get $10)
+ (local.get $12)
+ )
+ (i32.store offset=20
+ (local.get $10)
+ (local.get $12)
)
- (local.get $4)
- )
- (i32.store
- (local.get $0)
- (local.get $10)
- )
- (i32.store offset=20
- (local.get $12)
- (local.get $10)
)
- )
- (br_if $do-once21
- (i32.eqz
- (local.get $10)
+ (br_if $do-once21
+ (i32.eqz
+ (local.get $12)
+ )
)
)
)
- )
- (if
- (i32.lt_u
- (local.get $10)
- (local.tee $0
- (i32.load
- (i32.const 192)
+ (if
+ (i32.lt_u
+ (local.get $12)
+ (local.tee $0
+ (i32.load
+ (i32.const 192)
+ )
)
)
+ (call $_abort)
)
- (call $_abort)
- )
- (i32.store offset=24
- (local.get $10)
- (local.get $12)
- )
- (if
- (local.tee $1
- (i32.load offset=16
- (local.get $4)
+ (i32.store
+ (i32.add
+ (local.get $12)
+ (i32.const 24)
)
+ (local.get $10)
)
(if
- (i32.lt_u
- (local.get $1)
- (local.get $0)
+ (local.tee $1
+ (i32.load
+ (i32.add
+ (local.get $4)
+ (i32.const 16)
+ )
+ )
)
- (call $_abort)
- (block
- (i32.store offset=16
- (local.get $10)
+ (if
+ (i32.lt_u
(local.get $1)
+ (local.get $0)
)
- (i32.store offset=24
- (local.get $1)
- (local.get $10)
+ (call $_abort)
+ (block
+ (i32.store
+ (i32.add
+ (local.get $12)
+ (i32.const 16)
+ )
+ (local.get $1)
+ )
+ (i32.store offset=24
+ (local.get $1)
+ (local.get $12)
+ )
)
)
)
- )
- (if
- (local.tee $0
- (i32.load offset=20
- (local.get $4)
- )
- )
(if
- (i32.lt_u
- (local.get $0)
+ (local.tee $0
(i32.load
- (i32.const 192)
+ (i32.add
+ (local.get $4)
+ (i32.const 20)
+ )
)
)
- (call $_abort)
- (block
- (i32.store offset=20
- (local.get $10)
+ (if
+ (i32.lt_u
(local.get $0)
+ (i32.load
+ (i32.const 192)
+ )
)
- (i32.store offset=24
- (local.get $0)
- (local.get $10)
+ (call $_abort)
+ (block
+ (i32.store
+ (i32.add
+ (local.get $12)
+ (i32.const 20)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=24
+ (local.get $0)
+ (local.get $12)
+ )
)
)
)
)
)
- )
- (if
- (i32.lt_u
- (local.get $3)
- (i32.const 16)
- )
- (block
- (i32.store offset=4
- (local.get $4)
- (i32.or
- (local.tee $0
- (i32.add
- (local.get $2)
- (local.get $3)
+ (if
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 16)
+ )
+ (block
+ (i32.store
+ (i32.add
+ (local.get $4)
+ (i32.const 4)
+ )
+ (i32.or
+ (local.tee $0
+ (i32.add
+ (local.get $2)
+ (local.get $3)
+ )
)
+ (i32.const 3)
)
- (i32.const 3)
)
- )
- (i32.store
- (local.tee $0
- (i32.add
+ (i32.store offset=4
+ (local.tee $0
(i32.add
(local.get $0)
(local.get $4)
)
- (i32.const 4)
)
- )
- (i32.or
- (i32.load
- (local.get $0)
+ (i32.or
+ (i32.load offset=4
+ (local.get $0)
+ )
+ (i32.const 1)
)
- (i32.const 1)
)
)
- )
- (block $do-once25
- (i32.store offset=4
- (local.get $4)
- (i32.or
- (local.get $2)
- (i32.const 3)
- )
- )
- (i32.store offset=4
- (local.get $5)
- (i32.or
- (local.get $3)
- (i32.const 1)
+ (block $do-once25
+ (i32.store
+ (i32.add
+ (local.get $4)
+ (i32.const 4)
+ )
+ (i32.or
+ (local.get $3)
+ (i32.const 3)
+ )
)
- )
- (i32.store
- (i32.add
- (local.get $3)
+ (i32.store offset=4
(local.get $5)
+ (i32.or
+ (local.get $2)
+ (i32.const 1)
+ )
)
- (local.get $3)
- )
- (local.set $0
- (i32.shr_u
- (local.get $3)
- (i32.const 3)
+ (i32.store
+ (i32.add
+ (local.get $2)
+ (local.get $5)
+ )
+ (local.get $2)
)
- )
- (if
- (i32.lt_u
- (local.get $3)
- (i32.const 256)
+ (local.set $0
+ (i32.shr_u
+ (local.get $2)
+ (i32.const 3)
+ )
)
- (block
- (local.set $3
- (i32.add
- (i32.shl
- (local.get $0)
- (i32.const 3)
- )
- (i32.const 216)
- )
+ (if
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 256)
)
- (if
- (i32.and
- (local.tee $1
- (i32.load
- (i32.const 176)
- )
- )
- (local.tee $0
+ (block
+ (local.set $2
+ (i32.add
(i32.shl
- (i32.const 1)
(local.get $0)
+ (i32.const 3)
)
+ (i32.const 216)
)
)
(if
- (i32.lt_u
- (local.tee $0
+ (i32.and
+ (local.tee $1
(i32.load
- (local.tee $1
- (i32.add
- (local.get $3)
- (i32.const 8)
+ (i32.const 176)
+ )
+ )
+ (local.tee $0
+ (i32.shl
+ (i32.const 1)
+ (local.get $0)
+ )
+ )
+ )
+ (block
+ (local.set $1
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ )
+ (if
+ (i32.lt_u
+ (local.tee $0
+ (i32.load offset=8
+ (local.get $2)
)
)
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ (call $_abort)
+ (block
+ (local.set $13
+ (local.get $1)
+ )
+ (local.set $6
+ (local.get $0)
+ )
)
- )
- (i32.load
- (i32.const 192)
)
)
- (call $_abort)
(block
+ (i32.store
+ (i32.const 176)
+ (i32.or
+ (local.get $0)
+ (local.get $1)
+ )
+ )
(local.set $13
- (local.get $1)
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
)
(local.set $6
- (local.get $0)
+ (local.get $2)
)
)
)
- (block
- (i32.store
- (i32.const 176)
- (i32.or
- (local.get $0)
- (local.get $1)
- )
- )
- (local.set $13
- (i32.add
- (local.get $3)
- (i32.const 8)
- )
- )
- (local.set $6
- (local.get $3)
+ (i32.store
+ (local.get $13)
+ (local.get $5)
+ )
+ (i32.store
+ (i32.add
+ (local.get $6)
+ (i32.const 12)
)
+ (local.get $5)
)
+ (i32.store offset=8
+ (local.get $5)
+ (local.get $6)
+ )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $2)
+ )
+ (br $do-once25)
)
- (i32.store
- (local.get $13)
- (local.get $5)
- )
- (i32.store offset=12
- (local.get $6)
- (local.get $5)
- )
- (i32.store offset=8
- (local.get $5)
- (local.get $6)
- )
- (i32.store offset=12
- (local.get $5)
- (local.get $3)
- )
- (br $do-once25)
)
- )
- (local.set $2
- (i32.add
- (i32.shl
- (local.tee $7
- (if (result i32)
- (local.tee $0
- (i32.shr_u
- (local.get $3)
- (i32.const 8)
- )
- )
+ (local.set $3
+ (i32.add
+ (i32.shl
+ (local.tee $7
(if (result i32)
- (i32.gt_u
- (local.get $3)
- (i32.const 16777215)
+ (local.tee $0
+ (i32.shr_u
+ (local.get $2)
+ (i32.const 8)
+ )
)
- (i32.const 31)
- (block (result i32)
- (local.set $7
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $0
- (i32.shl
- (local.get $0)
- (local.tee $1
- (i32.and
- (i32.shr_u
- (i32.add
- (local.get $0)
- (i32.const 1048320)
+ (if (result i32)
+ (i32.gt_u
+ (local.get $2)
+ (i32.const 16777215)
+ )
+ (i32.const 31)
+ (block (result i32)
+ (local.set $7
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (local.tee $1
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.get $0)
+ (i32.const 1048320)
+ )
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 8)
)
- (i32.const 8)
)
)
)
+ (i32.const 520192)
)
- (i32.const 520192)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 4)
)
- (i32.const 4)
)
- )
- (local.set $2
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $0
- (i32.shl
- (local.get $0)
- (local.get $7)
+ (local.set $3
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (local.get $7)
+ )
)
+ (i32.const 245760)
)
- (i32.const 245760)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 2)
)
- (i32.const 2)
)
- )
- (i32.or
- (i32.and
- (i32.shr_u
- (local.get $3)
- (i32.add
- (local.tee $0
- (i32.add
- (i32.sub
- (i32.const 14)
- (i32.or
+ (i32.or
+ (i32.and
+ (i32.shr_u
+ (local.get $2)
+ (i32.add
+ (local.tee $0
+ (i32.add
+ (i32.sub
+ (i32.const 14)
(i32.or
- (local.get $1)
- (local.get $7)
+ (i32.or
+ (local.get $1)
+ (local.get $7)
+ )
+ (local.get $3)
)
- (local.get $2)
)
- )
- (i32.shr_u
- (i32.shl
- (local.get $0)
- (local.get $2)
+ (i32.shr_u
+ (i32.shl
+ (local.get $0)
+ (local.get $3)
+ )
+ (i32.const 15)
)
- (i32.const 15)
)
)
+ (i32.const 7)
)
- (i32.const 7)
)
+ (i32.const 1)
+ )
+ (i32.shl
+ (local.get $0)
+ (i32.const 1)
)
- (i32.const 1)
- )
- (i32.shl
- (local.get $0)
- (i32.const 1)
)
)
)
+ (i32.const 0)
)
- (i32.const 0)
)
+ (i32.const 2)
)
- (i32.const 2)
+ (i32.const 480)
)
- (i32.const 480)
)
- )
- (i32.store offset=28
- (local.get $5)
- (local.get $7)
- )
- (i32.store offset=4
- (local.tee $0
+ (i32.store offset=28
+ (local.get $5)
+ (local.get $7)
+ )
+ (i32.store offset=4
(i32.add
(local.get $5)
(i32.const 16)
)
+ (i32.const 0)
)
- (i32.const 0)
- )
- (i32.store
- (local.get $0)
- (i32.const 0)
- )
- (if
- (i32.eqz
- (i32.and
- (local.tee $1
- (i32.load
- (i32.const 180)
+ (i32.store offset=16
+ (local.get $5)
+ (i32.const 0)
+ )
+ (if
+ (i32.eqz
+ (i32.and
+ (local.tee $1
+ (i32.load
+ (i32.const 180)
+ )
)
- )
- (local.tee $0
- (i32.shl
- (i32.const 1)
- (local.get $7)
+ (local.tee $0
+ (i32.shl
+ (i32.const 1)
+ (local.get $7)
+ )
)
)
)
- )
- (block
- (i32.store
- (i32.const 180)
- (i32.or
- (local.get $0)
- (local.get $1)
+ (block
+ (i32.store
+ (i32.const 180)
+ (i32.or
+ (local.get $0)
+ (local.get $1)
+ )
)
+ (i32.store
+ (local.get $3)
+ (local.get $5)
+ )
+ (i32.store offset=24
+ (local.get $5)
+ (local.get $3)
+ )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $5)
+ )
+ (i32.store offset=8
+ (local.get $5)
+ (local.get $5)
+ )
+ (br $do-once25)
)
- (i32.store
- (local.get $2)
- (local.get $5)
- )
- (i32.store offset=24
- (local.get $5)
- (local.get $2)
- )
- (i32.store offset=12
- (local.get $5)
- (local.get $5)
- )
- (i32.store offset=8
- (local.get $5)
- (local.get $5)
- )
- (br $do-once25)
)
- )
- (local.set $7
- (i32.shl
- (local.get $3)
- (select
- (i32.const 0)
- (i32.sub
- (i32.const 25)
- (i32.shr_u
+ (local.set $7
+ (i32.shl
+ (local.get $2)
+ (select
+ (i32.const 0)
+ (i32.sub
+ (i32.const 25)
+ (i32.shr_u
+ (local.get $7)
+ (i32.const 1)
+ )
+ )
+ (i32.eq
(local.get $7)
- (i32.const 1)
+ (i32.const 31)
)
)
- (i32.eq
- (local.get $7)
- (i32.const 31)
- )
)
)
- )
- (local.set $0
- (i32.load
- (local.get $2)
+ (local.set $0
+ (i32.load
+ (local.get $3)
+ )
)
- )
- (block $__rjto$1
- (block $__rjti$1
- (loop $while-in28
- (br_if $__rjti$1
- (i32.eq
- (i32.and
- (i32.load offset=4
- (local.get $0)
+ (block $__rjto$1
+ (block $__rjti$1
+ (loop $while-in28
+ (br_if $__rjti$1
+ (i32.eq
+ (i32.and
+ (i32.load
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
+ )
+ (i32.const -8)
)
- (i32.const -8)
+ (local.get $2)
)
- (local.get $3)
)
- )
- (local.set $2
- (i32.shl
- (local.get $7)
- (i32.const 1)
+ (local.set $3
+ (i32.shl
+ (local.get $7)
+ (i32.const 1)
+ )
)
- )
- (if
- (local.tee $1
- (i32.load
- (local.tee $7
- (i32.add
+ (if
+ (local.tee $1
+ (i32.load
+ (local.tee $7
(i32.add
- (local.get $0)
- (i32.const 16)
- )
- (i32.shl
- (i32.shr_u
- (local.get $7)
- (i32.const 31)
+ (i32.add
+ (local.get $0)
+ (i32.const 16)
+ )
+ (i32.shl
+ (i32.shr_u
+ (local.get $7)
+ (i32.const 31)
+ )
+ (i32.const 2)
)
- (i32.const 2)
)
)
)
)
+ (block
+ (local.set $7
+ (local.get $3)
+ )
+ (local.set $0
+ (local.get $1)
+ )
+ (br $while-in28)
+ )
+ )
+ )
+ (if
+ (i32.lt_u
+ (local.get $7)
+ (i32.load
+ (i32.const 192)
+ )
)
+ (call $_abort)
(block
- (local.set $7
- (local.get $2)
+ (i32.store
+ (local.get $7)
+ (local.get $5)
)
- (local.set $0
- (local.get $1)
+ (i32.store offset=24
+ (local.get $5)
+ (local.get $0)
+ )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $5)
+ )
+ (i32.store offset=8
+ (local.get $5)
+ (local.get $5)
)
- (br $while-in28)
+ (br $do-once25)
)
)
+ (br $__rjto$1)
)
(if
- (i32.lt_u
- (local.get $7)
- (i32.load
- (i32.const 192)
+ (i32.and
+ (i32.ge_u
+ (local.tee $2
+ (i32.load offset=8
+ (local.get $0)
+ )
+ )
+ (local.tee $1
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ )
+ (i32.ge_u
+ (local.get $0)
+ (local.get $1)
)
)
- (call $_abort)
(block
- (i32.store
- (local.get $7)
+ (i32.store offset=12
+ (local.get $2)
(local.get $5)
)
- (i32.store offset=24
- (local.get $5)
+ (i32.store offset=8
(local.get $0)
- )
- (i32.store offset=12
- (local.get $5)
(local.get $5)
)
(i32.store offset=8
(local.get $5)
- (local.get $5)
+ (local.get $2)
)
- (br $do-once25)
- )
- )
- (br $__rjto$1)
- )
- (if
- (i32.and
- (i32.ge_u
- (local.tee $2
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
- )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $0)
)
- (local.tee $1
- (i32.load
- (i32.const 192)
- )
+ (i32.store offset=24
+ (local.get $5)
+ (i32.const 0)
)
)
- (i32.ge_u
- (local.get $0)
- (local.get $1)
- )
- )
- (block
- (i32.store offset=12
- (local.get $2)
- (local.get $5)
- )
- (i32.store
- (local.get $3)
- (local.get $5)
- )
- (i32.store offset=8
- (local.get $5)
- (local.get $2)
- )
- (i32.store offset=12
- (local.get $5)
- (local.get $0)
- )
- (i32.store offset=24
- (local.get $5)
- (i32.const 0)
- )
+ (call $_abort)
)
- (call $_abort)
)
)
)
- )
- (return
- (i32.add
- (local.get $4)
- (i32.const 8)
+ (return
+ (i32.add
+ (local.get $4)
+ (i32.const 8)
+ )
)
)
+ (local.get $3)
)
- (local.get $2)
+ (local.get $3)
)
- (local.get $2)
)
+ (local.get $3)
)
- (local.get $2)
)
)
)
)
- )
- (if
- (i32.ge_u
- (local.tee $1
- (i32.load
- (i32.const 184)
- )
- )
- (local.get $0)
- )
- (block
- (local.set $2
- (i32.load
- (i32.const 196)
+ (if
+ (i32.ge_u
+ (local.tee $1
+ (i32.load
+ (i32.const 184)
+ )
)
+ (local.get $0)
)
- (if
- (i32.gt_u
- (local.tee $3
- (i32.sub
- (local.get $1)
- (local.get $0)
- )
+ (block
+ (local.set $3
+ (i32.load
+ (i32.const 196)
)
- (i32.const 15)
)
- (block
- (i32.store
- (i32.const 196)
- (local.tee $1
- (i32.add
+ (if
+ (i32.gt_u
+ (local.tee $2
+ (i32.sub
+ (local.get $1)
(local.get $0)
- (local.get $2)
)
)
+ (i32.const 15)
)
- (i32.store
- (i32.const 184)
- (local.get $3)
- )
- (i32.store offset=4
- (local.get $1)
- (i32.or
- (local.get $3)
- (i32.const 1)
+ (block
+ (i32.store
+ (i32.const 196)
+ (local.tee $1
+ (i32.add
+ (local.get $0)
+ (local.get $3)
+ )
+ )
)
- )
- (i32.store
- (i32.add
+ (i32.store
+ (i32.const 184)
+ (local.get $2)
+ )
+ (i32.store offset=4
(local.get $1)
+ (i32.or
+ (local.get $2)
+ (i32.const 1)
+ )
+ )
+ (i32.store
+ (i32.add
+ (local.get $1)
+ (local.get $2)
+ )
+ (local.get $2)
+ )
+ (i32.store offset=4
(local.get $3)
+ (i32.or
+ (local.get $0)
+ (i32.const 3)
+ )
)
- (local.get $3)
)
- (i32.store offset=4
- (local.get $2)
- (i32.or
- (local.get $0)
- (i32.const 3)
+ (block
+ (i32.store
+ (i32.const 184)
+ (i32.const 0)
)
- )
- )
- (block
- (i32.store
- (i32.const 184)
- (i32.const 0)
- )
- (i32.store
- (i32.const 196)
- (i32.const 0)
- )
- (i32.store offset=4
- (local.get $2)
- (i32.or
- (local.get $1)
- (i32.const 3)
+ (i32.store
+ (i32.const 196)
+ (i32.const 0)
)
- )
- (i32.store
- (local.tee $0
- (i32.add
+ (i32.store offset=4
+ (local.get $3)
+ (i32.or
+ (local.get $1)
+ (i32.const 3)
+ )
+ )
+ (i32.store offset=4
+ (local.tee $0
(i32.add
(local.get $1)
- (local.get $2)
+ (local.get $3)
)
- (i32.const 4)
)
- )
- (i32.or
- (i32.load
- (local.get $0)
+ (i32.or
+ (i32.load offset=4
+ (local.get $0)
+ )
+ (i32.const 1)
)
- (i32.const 1)
)
)
)
- )
- (return
- (i32.add
- (local.get $2)
- (i32.const 8)
- )
+ (br $folding-inner1)
)
)
- )
- (block $folding-inner0
- (br_if $folding-inner0
- (i32.gt_u
- (local.tee $1
- (i32.load
- (i32.const 188)
+ (block $folding-inner0
+ (br_if $folding-inner0
+ (i32.gt_u
+ (local.tee $1
+ (i32.load
+ (i32.const 188)
+ )
)
- )
- (local.get $0)
- )
- )
- (if
- (i32.eqz
- (i32.load
- (i32.const 648)
+ (local.get $0)
)
)
(if
- (i32.and
- (local.tee $1
- (call $_sysconf
- (i32.const 30)
- )
- )
- (i32.add
- (local.get $1)
- (i32.const -1)
+ (i32.eqz
+ (i32.load
+ (i32.const 648)
)
)
- (call $_abort)
- (block
- (i32.store
- (i32.const 656)
- (local.get $1)
- )
- (i32.store
- (i32.const 652)
- (local.get $1)
- )
- (i32.store
- (i32.const 660)
- (i32.const -1)
- )
- (i32.store
- (i32.const 664)
- (i32.const -1)
- )
- (i32.store
- (i32.const 668)
- (i32.const 0)
- )
- (i32.store
- (i32.const 620)
- (i32.const 0)
+ (if
+ (i32.and
+ (local.tee $1
+ (call $_sysconf
+ (i32.const 30)
+ )
+ )
+ (i32.add
+ (local.get $1)
+ (i32.const -1)
+ )
)
- (i32.store
- (i32.const 648)
- (i32.xor
- (i32.and
- (call $_time
- (i32.const 0)
+ (call $_abort)
+ (block
+ (i32.store
+ (i32.const 656)
+ (local.get $1)
+ )
+ (i32.store
+ (i32.const 652)
+ (local.get $1)
+ )
+ (i32.store
+ (i32.const 660)
+ (i32.const -1)
+ )
+ (i32.store
+ (i32.const 664)
+ (i32.const -1)
+ )
+ (i32.store
+ (i32.const 668)
+ (i32.const 0)
+ )
+ (i32.store
+ (i32.const 620)
+ (i32.const 0)
+ )
+ (i32.store
+ (i32.const 648)
+ (i32.xor
+ (i32.and
+ (call $_time
+ (i32.const 0)
+ )
+ (i32.const -16)
)
- (i32.const -16)
+ (i32.const 1431655768)
)
- (i32.const 1431655768)
)
)
)
)
- )
- (if
- (i32.le_u
- (local.tee $6
- (i32.and
- (local.tee $5
- (i32.add
- (local.tee $1
- (i32.load
- (i32.const 656)
+ (if
+ (i32.le_u
+ (local.tee $6
+ (i32.and
+ (local.tee $5
+ (i32.add
+ (local.tee $1
+ (i32.load
+ (i32.const 656)
+ )
)
- )
- (local.tee $9
- (i32.add
- (local.get $0)
- (i32.const 47)
+ (local.tee $8
+ (i32.add
+ (local.get $0)
+ (i32.const 47)
+ )
)
)
)
- )
- (local.tee $12
- (i32.sub
- (i32.const 0)
- (local.get $1)
+ (local.tee $10
+ (i32.sub
+ (i32.const 0)
+ (local.get $1)
+ )
)
)
)
+ (local.get $0)
)
- (local.get $0)
- )
- (return
- (i32.const 0)
- )
- )
- (if
- (local.tee $2
- (i32.load
- (i32.const 616)
+ (return
+ (i32.const 0)
)
)
(if
- (i32.or
- (i32.le_u
- (local.tee $1
- (i32.add
- (local.tee $3
- (i32.load
- (i32.const 608)
+ (local.tee $3
+ (i32.load
+ (i32.const 616)
+ )
+ )
+ (if
+ (i32.or
+ (i32.le_u
+ (local.tee $1
+ (i32.add
+ (local.tee $2
+ (i32.load
+ (i32.const 608)
+ )
)
+ (local.get $6)
)
- (local.get $6)
)
+ (local.get $2)
+ )
+ (i32.gt_u
+ (local.get $1)
+ (local.get $3)
)
- (local.get $3)
)
- (i32.gt_u
- (local.get $1)
- (local.get $2)
+ (return
+ (i32.const 0)
)
)
- (return
- (i32.const 0)
- )
)
- )
- (local.set $10
- (i32.add
- (local.get $0)
- (i32.const 48)
+ (local.set $12
+ (i32.add
+ (local.get $0)
+ (i32.const 48)
+ )
)
- )
- (block $__rjto$13
- (block $__rjti$13
- (if
- (i32.eqz
- (i32.and
- (i32.load
- (i32.const 620)
+ (block $__rjto$13
+ (block $__rjti$13
+ (if
+ (i32.eqz
+ (i32.and
+ (i32.load
+ (i32.const 620)
+ )
+ (i32.const 4)
)
- (i32.const 4)
)
- )
- (block
- (block $label$break$L279
- (block $__rjti$5
- (block $__rjti$4
- (br_if $__rjti$4
- (i32.eqz
- (local.tee $4
- (i32.load
- (i32.const 200)
+ (block
+ (block $label$break$L279
+ (block $__rjti$5
+ (block $__rjti$4
+ (br_if $__rjti$4
+ (i32.eqz
+ (local.tee $4
+ (i32.load
+ (i32.const 200)
+ )
)
)
)
- )
- (local.set $1
- (i32.const 624)
- )
- (loop $while-in34
- (block $while-out33
- (if
- (i32.le_u
- (local.tee $3
- (i32.load
- (local.get $1)
- )
- )
- (local.get $4)
- )
+ (local.set $1
+ (i32.const 624)
+ )
+ (loop $while-in34
+ (block $while-out33
(if
- (i32.gt_u
- (i32.add
- (local.get $3)
+ (i32.le_u
+ (local.tee $2
(i32.load
- (local.tee $2
- (i32.add
- (local.get $1)
- (i32.const 4)
- )
- )
+ (local.get $1)
)
)
(local.get $4)
)
- (block
- (local.set $4
- (local.get $1)
+ (if
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.load
+ (local.tee $3
+ (i32.add
+ (local.get $1)
+ (i32.const 4)
+ )
+ )
+ )
+ )
+ (local.get $4)
+ )
+ (block
+ (local.set $4
+ (local.get $1)
+ )
+ (br $while-out33)
)
- (br $while-out33)
- )
- )
- )
- (br_if $while-in34
- (local.tee $1
- (i32.load offset=8
- (local.get $1)
)
)
- )
- (br $__rjti$4)
- )
- )
- (if
- (i32.lt_u
- (local.tee $3
- (i32.and
- (i32.sub
- (local.get $5)
+ (br_if $while-in34
+ (local.tee $1
(i32.load
- (i32.const 188)
+ (i32.add
+ (local.get $1)
+ (i32.const 8)
+ )
)
)
- (local.get $12)
)
+ (br $__rjti$4)
)
- (i32.const 2147483647)
)
- (block
- (local.set $1
- (call $_sbrk
- (local.get $3)
- )
- )
- (if
- (i32.eq
- (i32.add
- (i32.load
- (local.get $4)
- )
- (i32.load
- (local.get $2)
+ (if
+ (i32.lt_u
+ (local.tee $2
+ (i32.and
+ (i32.sub
+ (local.get $5)
+ (i32.load
+ (i32.const 188)
+ )
)
+ (local.get $10)
)
- (local.get $1)
)
- (br_if $__rjti$13
- (i32.ne
- (local.get $1)
- (i32.const -1)
+ (i32.const 2147483647)
+ )
+ (block
+ (local.set $1
+ (call $_sbrk
+ (local.get $2)
)
)
- (block
- (local.set $2
+ (if
+ (i32.eq
+ (i32.add
+ (i32.load
+ (local.get $4)
+ )
+ (i32.load
+ (local.get $3)
+ )
+ )
(local.get $1)
)
- (br $__rjti$5)
+ (br_if $__rjti$13
+ (i32.ne
+ (local.get $1)
+ (i32.const -1)
+ )
+ )
+ (block
+ (local.set $3
+ (local.get $1)
+ )
+ (br $__rjti$5)
+ )
)
)
)
+ (br $label$break$L279)
)
- (br $label$break$L279)
- )
- (if
- (i32.ne
- (local.tee $1
- (call $_sbrk
- (i32.const 0)
+ (if
+ (i32.ne
+ (local.tee $1
+ (call $_sbrk
+ (i32.const 0)
+ )
)
+ (i32.const -1)
)
- (i32.const -1)
- )
- (block
- (local.set $3
- (if (result i32)
- (i32.and
- (local.tee $3
- (local.get $1)
- )
- (local.tee $2
- (i32.add
- (local.tee $4
- (i32.load
- (i32.const 652)
+ (block
+ (local.set $2
+ (if (result i32)
+ (i32.and
+ (local.tee $2
+ (local.get $1)
+ )
+ (local.tee $3
+ (i32.add
+ (local.tee $4
+ (i32.load
+ (i32.const 652)
+ )
)
+ (i32.const -1)
)
- (i32.const -1)
)
)
- )
- (i32.add
- (i32.sub
- (local.get $6)
- (local.get $3)
- )
- (i32.and
- (i32.add
+ (i32.add
+ (i32.sub
+ (local.get $6)
(local.get $2)
- (local.get $3)
)
- (i32.sub
- (i32.const 0)
- (local.get $4)
+ (i32.and
+ (i32.add
+ (local.get $2)
+ (local.get $3)
+ )
+ (i32.sub
+ (i32.const 0)
+ (local.get $4)
+ )
)
)
+ (local.get $6)
)
- (local.get $6)
)
- )
- (local.set $12
- (i32.add
- (local.tee $4
- (i32.load
- (i32.const 608)
+ (local.set $10
+ (i32.add
+ (local.tee $4
+ (i32.load
+ (i32.const 608)
+ )
)
- )
- (local.get $3)
- )
- )
- (if
- (i32.and
- (i32.lt_u
- (local.get $3)
- (i32.const 2147483647)
- )
- (i32.gt_u
- (local.get $3)
- (local.get $0)
+ (local.get $2)
)
)
- (block
- (if
- (local.tee $2
- (i32.load
- (i32.const 616)
- )
+ (if
+ (i32.and
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 2147483647)
)
- (br_if $label$break$L279
- (i32.or
- (i32.le_u
- (local.get $12)
- (local.get $4)
+ (i32.gt_u
+ (local.get $2)
+ (local.get $0)
+ )
+ )
+ (block
+ (if
+ (local.tee $3
+ (i32.load
+ (i32.const 616)
)
- (i32.gt_u
- (local.get $12)
- (local.get $2)
+ )
+ (br_if $label$break$L279
+ (i32.or
+ (i32.le_u
+ (local.get $10)
+ (local.get $4)
+ )
+ (i32.gt_u
+ (local.get $10)
+ (local.get $3)
+ )
)
)
)
- )
- (br_if $__rjti$13
- (i32.eq
- (local.get $1)
- (local.tee $2
- (call $_sbrk
- (local.get $3)
+ (br_if $__rjti$13
+ (i32.eq
+ (local.get $1)
+ (local.tee $3
+ (call $_sbrk
+ (local.get $2)
+ )
)
)
)
+ (br $__rjti$5)
)
- (br $__rjti$5)
)
)
)
+ (br $label$break$L279)
)
- (br $label$break$L279)
- )
- (local.set $1
- (local.get $3)
- )
- (local.set $4
- (i32.sub
- (i32.const 0)
- (local.get $1)
+ (local.set $1
+ (local.get $2)
)
- )
- (local.set $3
- (if (result i32)
- (i32.and
+ (local.set $4
+ (i32.sub
+ (i32.const 0)
+ (local.get $1)
+ )
+ )
+ (local.set $2
+ (if (result i32)
(i32.and
- (i32.ne
- (local.get $2)
- (i32.const -1)
+ (i32.and
+ (i32.ne
+ (local.get $3)
+ (i32.const -1)
+ )
+ (i32.lt_u
+ (local.get $1)
+ (i32.const 2147483647)
+ )
)
- (i32.lt_u
+ (i32.gt_u
+ (local.get $12)
(local.get $1)
- (i32.const 2147483647)
)
)
- (i32.gt_u
- (local.get $10)
- (local.get $1)
- )
- )
- (if (result i32)
- (i32.lt_u
- (local.tee $3
- (i32.and
- (i32.add
- (local.tee $3
- (i32.load
- (i32.const 656)
+ (if (result i32)
+ (i32.lt_u
+ (local.tee $2
+ (i32.and
+ (i32.add
+ (local.tee $2
+ (i32.load
+ (i32.const 656)
+ )
+ )
+ (i32.sub
+ (local.get $8)
+ (local.get $1)
)
)
(i32.sub
- (local.get $9)
- (local.get $1)
+ (i32.const 0)
+ (local.get $2)
)
)
- (i32.sub
- (i32.const 0)
- (local.get $3)
- )
)
+ (i32.const 2147483647)
)
- (i32.const 2147483647)
- )
- (if (result i32)
- (i32.eq
- (call $_sbrk
- (local.get $3)
- )
- (i32.const -1)
- )
- (block
- (drop
+ (if (result i32)
+ (i32.eq
(call $_sbrk
- (local.get $4)
+ (local.get $2)
)
+ (i32.const -1)
+ )
+ (block
+ (drop
+ (call $_sbrk
+ (local.get $4)
+ )
+ )
+ (br $label$break$L279)
+ )
+ (i32.add
+ (local.get $1)
+ (local.get $2)
)
- (br $label$break$L279)
- )
- (i32.add
- (local.get $1)
- (local.get $3)
)
+ (local.get $1)
)
(local.get $1)
)
- (local.get $1)
- )
- )
- (if
- (i32.ne
- (local.get $2)
- (i32.const -1)
)
- (block
- (local.set $1
- (local.get $2)
+ (if
+ (i32.ne
+ (local.get $3)
+ (i32.const -1)
+ )
+ (block
+ (local.set $1
+ (local.get $3)
+ )
+ (br $__rjti$13)
)
- (br $__rjti$13)
)
)
- )
- (i32.store
- (i32.const 620)
- (i32.or
- (i32.load
- (i32.const 620)
+ (i32.store
+ (i32.const 620)
+ (i32.or
+ (i32.load
+ (i32.const 620)
+ )
+ (i32.const 4)
)
- (i32.const 4)
)
)
)
- )
- (if
- (i32.lt_u
- (local.get $6)
- (i32.const 2147483647)
- )
(if
- (i32.and
- (i32.lt_u
- (local.tee $1
- (call $_sbrk
- (local.get $6)
+ (i32.lt_u
+ (local.get $6)
+ (i32.const 2147483647)
+ )
+ (if
+ (i32.and
+ (i32.lt_u
+ (local.tee $1
+ (call $_sbrk
+ (local.get $6)
+ )
+ )
+ (local.tee $2
+ (call $_sbrk
+ (i32.const 0)
+ )
)
)
- (local.tee $3
- (call $_sbrk
- (i32.const 0)
+ (i32.and
+ (i32.ne
+ (local.get $1)
+ (i32.const -1)
+ )
+ (i32.ne
+ (local.get $2)
+ (i32.const -1)
)
)
)
- (i32.and
- (i32.ne
- (local.get $1)
- (i32.const -1)
- )
- (i32.ne
- (local.get $3)
- (i32.const -1)
+ (br_if $__rjti$13
+ (i32.gt_u
+ (local.tee $2
+ (i32.sub
+ (local.get $2)
+ (local.get $1)
+ )
+ )
+ (i32.add
+ (local.get $0)
+ (i32.const 40)
+ )
)
)
)
- (br_if $__rjti$13
- (i32.gt_u
- (local.tee $3
- (i32.sub
- (local.get $3)
- (local.get $1)
- )
- )
- (i32.add
- (local.get $0)
- (i32.const 40)
- )
+ )
+ (br $__rjto$13)
+ )
+ (i32.store
+ (i32.const 608)
+ (local.tee $3
+ (i32.add
+ (i32.load
+ (i32.const 608)
)
+ (local.get $2)
)
)
)
- (br $__rjto$13)
- )
- (i32.store
- (i32.const 608)
- (local.tee $2
- (i32.add
+ (if
+ (i32.gt_u
+ (local.get $3)
(i32.load
- (i32.const 608)
+ (i32.const 612)
)
- (local.get $3)
)
- )
- )
- (if
- (i32.gt_u
- (local.get $2)
- (i32.load
+ (i32.store
(i32.const 612)
+ (local.get $3)
)
)
- (i32.store
- (i32.const 612)
- (local.get $2)
- )
- )
- (if
- (local.tee $5
- (i32.load
- (i32.const 200)
- )
- )
- (block $do-once40
- (local.set $2
- (i32.const 624)
+ (if
+ (local.tee $5
+ (i32.load
+ (i32.const 200)
+ )
)
- (block $__rjto$10
- (block $__rjti$10
- (loop $while-in45
- (br_if $__rjti$10
- (i32.eq
- (i32.add
- (local.tee $10
- (i32.load
- (local.get $2)
+ (block $do-once40
+ (local.set $3
+ (i32.const 624)
+ )
+ (block $__rjto$10
+ (block $__rjti$10
+ (loop $while-in45
+ (br_if $__rjti$10
+ (i32.eq
+ (i32.add
+ (local.tee $12
+ (i32.load
+ (local.get $3)
+ )
)
- )
- (local.tee $6
- (i32.load
- (local.tee $4
- (i32.add
- (local.get $2)
- (i32.const 4)
+ (local.tee $6
+ (i32.load
+ (local.tee $4
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
)
)
)
)
+ (local.get $1)
)
- (local.get $1)
)
- )
- (br_if $while-in45
- (local.tee $2
- (i32.load offset=8
- (local.get $2)
+ (br_if $while-in45
+ (local.tee $3
+ (i32.load
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ )
)
)
)
- )
- (br $__rjto$10)
- )
- (if
- (i32.eqz
- (i32.and
- (i32.load offset=12
- (local.get $2)
- )
- (i32.const 8)
- )
+ (br $__rjto$10)
)
(if
- (i32.and
- (i32.lt_u
- (local.get $5)
- (local.get $1)
- )
- (i32.ge_u
- (local.get $5)
- (local.get $10)
- )
- )
- (block
- (i32.store
- (local.get $4)
- (i32.add
+ (i32.eqz
+ (i32.and
+ (i32.load offset=12
(local.get $3)
- (local.get $6)
)
+ (i32.const 8)
)
- (local.set $2
- (i32.add
+ )
+ (if
+ (i32.and
+ (i32.lt_u
(local.get $5)
- (local.tee $1
- (select
- (i32.and
- (i32.sub
- (i32.const 0)
- (local.tee $1
- (i32.add
- (local.get $5)
- (i32.const 8)
+ (local.get $1)
+ )
+ (i32.ge_u
+ (local.get $5)
+ (local.get $12)
+ )
+ )
+ (block
+ (i32.store
+ (local.get $4)
+ (i32.add
+ (local.get $2)
+ (local.get $6)
+ )
+ )
+ (local.set $3
+ (i32.add
+ (local.get $5)
+ (local.tee $1
+ (select
+ (i32.and
+ (i32.sub
+ (i32.const 0)
+ (local.tee $1
+ (i32.add
+ (local.get $5)
+ (i32.const 8)
+ )
)
)
+ (i32.const 7)
+ )
+ (i32.const 0)
+ (i32.and
+ (local.get $1)
+ (i32.const 7)
)
- (i32.const 7)
- )
- (i32.const 0)
- (i32.and
- (local.get $1)
- (i32.const 7)
)
)
)
)
- )
- (local.set $1
- (i32.add
- (i32.load
- (i32.const 188)
- )
- (i32.sub
- (local.get $3)
- (local.get $1)
+ (local.set $1
+ (i32.add
+ (i32.load
+ (i32.const 188)
+ )
+ (i32.sub
+ (local.get $2)
+ (local.get $1)
+ )
)
)
- )
- (i32.store
- (i32.const 200)
- (local.get $2)
- )
- (i32.store
- (i32.const 188)
- (local.get $1)
- )
- (i32.store offset=4
- (local.get $2)
- (i32.or
- (local.get $1)
- (i32.const 1)
+ (i32.store
+ (i32.const 200)
+ (local.get $3)
)
- )
- (i32.store offset=4
- (i32.add
+ (i32.store
+ (i32.const 188)
(local.get $1)
- (local.get $2)
)
- (i32.const 40)
- )
- (i32.store
- (i32.const 204)
- (i32.load
- (i32.const 664)
+ (i32.store offset=4
+ (local.get $3)
+ (i32.or
+ (local.get $1)
+ (i32.const 1)
+ )
)
+ (i32.store offset=4
+ (i32.add
+ (local.get $1)
+ (local.get $3)
+ )
+ (i32.const 40)
+ )
+ (i32.store
+ (i32.const 204)
+ (i32.load
+ (i32.const 664)
+ )
+ )
+ (br $do-once40)
)
- (br $do-once40)
)
)
)
- )
- (if
- (i32.lt_u
- (local.get $1)
- (local.tee $4
- (i32.load
+ (if
+ (i32.lt_u
+ (local.get $1)
+ (local.tee $4
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ )
+ (block
+ (i32.store
(i32.const 192)
+ (local.get $1)
+ )
+ (local.set $4
+ (local.get $1)
)
)
)
- (block
- (i32.store
- (i32.const 192)
- (local.get $1)
- )
- (local.set $4
+ (local.set $12
+ (i32.add
(local.get $1)
+ (local.get $2)
)
)
- )
- (local.set $10
- (i32.add
- (local.get $1)
- (local.get $3)
+ (local.set $3
+ (i32.const 624)
)
- )
- (local.set $2
- (i32.const 624)
- )
- (local.set $4
- (block $__rjto$11 (result i32)
- (block $__rjti$11
- (br $__rjto$11
- (loop $while-in47 (result i32)
- (if
- (i32.eq
- (i32.load
- (local.get $2)
+ (local.set $4
+ (block $__rjto$11 (result i32)
+ (block $__rjti$11
+ (br $__rjto$11
+ (loop $while-in47 (result i32)
+ (if
+ (i32.eq
+ (i32.load
+ (local.get $3)
+ )
+ (local.get $12)
)
- (local.get $10)
- )
- (block
- (local.set $6
- (local.get $2)
+ (block
+ (local.set $6
+ (local.get $3)
+ )
+ (br $__rjti$11)
)
- (br $__rjti$11)
)
- )
- (br_if $while-in47
- (local.tee $2
- (i32.load offset=8
- (local.get $2)
+ (br_if $while-in47
+ (local.tee $3
+ (i32.load
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ )
)
)
+ (i32.const 624)
)
- (i32.const 624)
)
)
- )
- (if (result i32)
- (i32.and
- (i32.load offset=12
- (local.get $2)
- )
- (i32.const 8)
- )
- (i32.const 624)
- (block
- (i32.store
- (local.get $6)
- (local.get $1)
- )
- (i32.store
- (local.tee $2
- (i32.add
- (local.get $2)
- (i32.const 4)
- )
- )
- (i32.add
- (i32.load
- (local.get $2)
- )
+ (if (result i32)
+ (i32.and
+ (i32.load offset=12
(local.get $3)
)
+ (i32.const 8)
)
- (local.set $9
- (i32.add
- (local.tee $12
- (i32.add
- (select
- (i32.and
- (i32.sub
- (i32.const 0)
- (local.tee $3
- (i32.add
- (local.get $1)
- (i32.const 8)
- )
- )
- )
- (i32.const 7)
- )
- (i32.const 0)
- (i32.and
- (local.get $3)
- (i32.const 7)
- )
- )
- (local.get $1)
+ (i32.const 624)
+ (block
+ (i32.store
+ (local.get $6)
+ (local.get $1)
+ )
+ (i32.store offset=4
+ (local.get $3)
+ (i32.add
+ (i32.load offset=4
+ (local.get $3)
)
+ (local.get $2)
)
- (local.get $0)
)
- )
- (local.set $7
- (i32.sub
- (i32.sub
- (local.tee $6
+ (local.set $8
+ (i32.add
+ (local.tee $10
(i32.add
- (local.get $10)
(select
(i32.and
(i32.sub
(i32.const 0)
- (local.tee $1
+ (local.tee $2
(i32.add
- (local.get $10)
+ (local.get $1)
(i32.const 8)
)
)
@@ -10897,1116 +10823,1146 @@
)
(i32.const 0)
(i32.and
- (local.get $1)
+ (local.get $2)
(i32.const 7)
)
)
+ (local.get $1)
)
)
- (local.get $12)
+ (local.get $0)
)
- (local.get $0)
)
- )
- (i32.store offset=4
- (local.get $12)
- (i32.or
- (local.get $0)
- (i32.const 3)
- )
- )
- (if
- (i32.eq
- (local.get $5)
- (local.get $6)
- )
- (block
- (i32.store
- (i32.const 188)
- (local.tee $0
- (i32.add
- (i32.load
- (i32.const 188)
+ (local.set $7
+ (i32.sub
+ (i32.sub
+ (local.tee $6
+ (i32.add
+ (local.get $12)
+ (select
+ (i32.and
+ (i32.sub
+ (i32.const 0)
+ (local.tee $1
+ (i32.add
+ (local.get $12)
+ (i32.const 8)
+ )
+ )
+ )
+ (i32.const 7)
+ )
+ (i32.const 0)
+ (i32.and
+ (local.get $1)
+ (i32.const 7)
+ )
+ )
)
- (local.get $7)
)
+ (local.get $10)
)
+ (local.get $0)
)
- (i32.store
- (i32.const 200)
- (local.get $9)
- )
- (i32.store offset=4
- (local.get $9)
- (i32.or
- (local.get $0)
- (i32.const 1)
- )
+ )
+ (i32.store offset=4
+ (local.get $10)
+ (i32.or
+ (local.get $0)
+ (i32.const 3)
)
)
- (block $do-once48
- (if
- (i32.eq
- (i32.load
- (i32.const 196)
- )
- (local.get $6)
- )
- (block
- (i32.store
- (i32.const 184)
- (local.tee $0
- (i32.add
- (i32.load
- (i32.const 184)
- )
- (local.get $7)
+ (if
+ (i32.eq
+ (local.get $5)
+ (local.get $6)
+ )
+ (block
+ (i32.store
+ (i32.const 188)
+ (local.tee $0
+ (i32.add
+ (i32.load
+ (i32.const 188)
)
+ (local.get $7)
)
)
- (i32.store
- (i32.const 196)
- (local.get $9)
- )
- (i32.store offset=4
- (local.get $9)
- (i32.or
- (local.get $0)
- (i32.const 1)
- )
- )
- (i32.store
- (i32.add
- (local.get $0)
- (local.get $9)
- )
+ )
+ (i32.store
+ (i32.const 200)
+ (local.get $8)
+ )
+ (i32.store offset=4
+ (local.get $8)
+ (i32.or
(local.get $0)
+ (i32.const 1)
)
- (br $do-once48)
)
)
- (i32.store
- (local.tee $0
- (i32.add
- (if (result i32)
- (i32.eq
- (i32.and
- (local.tee $0
- (i32.load offset=4
- (local.get $6)
- )
+ (block $do-once48
+ (if
+ (i32.eq
+ (i32.load
+ (i32.const 196)
+ )
+ (local.get $6)
+ )
+ (block
+ (i32.store
+ (i32.const 184)
+ (local.tee $0
+ (i32.add
+ (i32.load
+ (i32.const 184)
)
- (i32.const 3)
+ (local.get $7)
)
+ )
+ )
+ (i32.store
+ (i32.const 196)
+ (local.get $8)
+ )
+ (i32.store offset=4
+ (local.get $8)
+ (i32.or
+ (local.get $0)
(i32.const 1)
)
- (block (result i32)
- (local.set $10
+ )
+ (i32.store
+ (i32.add
+ (local.get $0)
+ (local.get $8)
+ )
+ (local.get $0)
+ )
+ (br $do-once48)
+ )
+ )
+ (i32.store
+ (local.tee $0
+ (i32.add
+ (if (result i32)
+ (i32.eq
(i32.and
- (local.get $0)
- (i32.const -8)
- )
- )
- (local.set $1
- (i32.shr_u
- (local.get $0)
+ (local.tee $0
+ (i32.load offset=4
+ (local.get $6)
+ )
+ )
(i32.const 3)
)
+ (i32.const 1)
)
- (block $label$break$L331
- (if
- (i32.lt_u
+ (block (result i32)
+ (local.set $12
+ (i32.and
(local.get $0)
- (i32.const 256)
+ (i32.const -8)
)
- (block
- (local.set $2
- (i32.load offset=12
- (local.get $6)
- )
+ )
+ (local.set $1
+ (i32.shr_u
+ (local.get $0)
+ (i32.const 3)
+ )
+ )
+ (block $label$break$L331
+ (if
+ (i32.lt_u
+ (local.get $0)
+ (i32.const 256)
)
- (if
- (i32.ne
- (local.tee $3
- (i32.load offset=8
- (local.get $6)
- )
- )
- (local.tee $0
- (i32.add
- (i32.shl
- (local.get $1)
- (i32.const 3)
- )
- (i32.const 216)
- )
+ (block
+ (local.set $3
+ (i32.load offset=12
+ (local.get $6)
)
)
- (block $do-once51
- (if
- (i32.lt_u
- (local.get $3)
- (local.get $4)
+ (if
+ (i32.ne
+ (local.tee $2
+ (i32.load offset=8
+ (local.get $6)
+ )
)
- (call $_abort)
- )
- (br_if $do-once51
- (i32.eq
- (i32.load offset=12
- (local.get $3)
+ (local.tee $0
+ (i32.add
+ (i32.shl
+ (local.get $1)
+ (i32.const 3)
+ )
+ (i32.const 216)
)
- (local.get $6)
)
)
- (call $_abort)
- )
- )
- (if
- (i32.eq
- (local.get $2)
- (local.get $3)
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.and
- (i32.load
- (i32.const 176)
+ (block $do-once51
+ (if
+ (i32.lt_u
+ (local.get $2)
+ (local.get $4)
)
- (i32.xor
- (i32.shl
- (i32.const 1)
- (local.get $1)
+ (call $_abort)
+ )
+ (br_if $do-once51
+ (i32.eq
+ (i32.load offset=12
+ (local.get $2)
)
- (i32.const -1)
+ (local.get $6)
)
)
+ (call $_abort)
)
- (br $label$break$L331)
)
- )
- (if
- (i32.eq
- (local.get $0)
- (local.get $2)
- )
- (local.set $15
- (i32.add
+ (if
+ (i32.eq
(local.get $2)
- (i32.const 8)
+ (local.get $3)
+ )
+ (block
+ (i32.store
+ (i32.const 176)
+ (i32.and
+ (i32.load
+ (i32.const 176)
+ )
+ (i32.xor
+ (i32.shl
+ (i32.const 1)
+ (local.get $1)
+ )
+ (i32.const -1)
+ )
+ )
+ )
+ (br $label$break$L331)
)
)
- (block $do-once53
- (if
- (i32.lt_u
- (local.get $2)
- (local.get $4)
+ (if
+ (i32.eq
+ (local.get $0)
+ (local.get $3)
+ )
+ (local.set $15
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
)
- (call $_abort)
)
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $2)
- (i32.const 8)
- )
- )
+ (block $do-once53
+ (if
+ (i32.lt_u
+ (local.get $3)
+ (local.get $4)
)
- (local.get $6)
+ (call $_abort)
)
- (block
- (local.set $15
- (local.get $0)
+ (local.set $0
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
)
- (br $do-once53)
)
+ (if
+ (i32.eq
+ (i32.load offset=8
+ (local.get $3)
+ )
+ (local.get $6)
+ )
+ (block
+ (local.set $15
+ (local.get $0)
+ )
+ (br $do-once53)
+ )
+ )
+ (call $_abort)
)
- (call $_abort)
)
- )
- (i32.store offset=12
- (local.get $3)
- (local.get $2)
- )
- (i32.store
- (local.get $15)
- (local.get $3)
- )
- )
- (block
- (local.set $5
- (i32.load offset=24
- (local.get $6)
+ (i32.store offset=12
+ (local.get $2)
+ (local.get $3)
+ )
+ (i32.store
+ (local.get $15)
+ (local.get $2)
)
)
- (if
- (i32.eq
- (local.tee $0
- (i32.load offset=12
- (local.get $6)
- )
+ (block
+ (local.set $5
+ (i32.load offset=24
+ (local.get $6)
)
- (local.get $6)
)
- (block $do-once55
- (if
- (i32.eqz
- (local.tee $1
- (i32.load
- (local.tee $0
- (i32.add
- (local.tee $3
- (i32.add
- (local.get $6)
- (i32.const 16)
- )
- )
- (i32.const 4)
- )
- )
- )
+ (if
+ (i32.eq
+ (local.tee $0
+ (i32.load offset=12
+ (local.get $6)
)
)
- (block
- (br_if $do-once55
- (i32.eqz
- (local.tee $1
- (i32.load
- (local.get $3)
- )
+ (local.get $6)
+ )
+ (block $do-once55
+ (local.set $0
+ (i32.add
+ (local.tee $2
+ (i32.add
+ (local.get $6)
+ (i32.const 16)
)
)
- )
- (local.set $0
- (local.get $3)
+ (i32.const 4)
)
)
- )
- (loop $while-in58
(if
- (local.tee $3
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $1)
- (i32.const 20)
- )
+ (i32.eqz
+ (local.tee $1
+ (i32.load offset=4
+ (local.get $2)
)
)
)
(block
- (local.set $1
- (local.get $3)
+ (br_if $do-once55
+ (i32.eqz
+ (local.tee $1
+ (i32.load offset=16
+ (local.get $6)
+ )
+ )
+ )
)
(local.set $0
(local.get $2)
)
- (br $while-in58)
)
)
- (if
- (local.tee $3
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $1)
- (i32.const 16)
+ (loop $while-in58
+ (if
+ (local.tee $2
+ (i32.load
+ (local.tee $3
+ (i32.add
+ (local.get $1)
+ (i32.const 20)
+ )
)
)
)
+ (block
+ (local.set $1
+ (local.get $2)
+ )
+ (local.set $0
+ (local.get $3)
+ )
+ (br $while-in58)
+ )
)
- (block
- (local.set $1
- (local.get $3)
+ (if
+ (local.tee $2
+ (i32.load
+ (local.tee $3
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
+ )
+ )
)
- (local.set $0
- (local.get $2)
+ (block
+ (local.set $1
+ (local.get $2)
+ )
+ (local.set $0
+ (local.get $3)
+ )
+ (br $while-in58)
)
- (br $while-in58)
)
)
- )
- (if
- (i32.lt_u
- (local.get $0)
- (local.get $4)
- )
- (call $_abort)
- (block
- (i32.store
+ (if
+ (i32.lt_u
(local.get $0)
- (i32.const 0)
- )
- (local.set $8
- (local.get $1)
+ (local.get $4)
)
- )
- )
- )
- (block
- (if
- (i32.lt_u
- (local.tee $2
- (i32.load offset=8
- (local.get $6)
+ (call $_abort)
+ (block
+ (i32.store
+ (local.get $0)
+ (i32.const 0)
)
- )
- (local.get $4)
- )
- (call $_abort)
- )
- (if
- (i32.ne
- (local.get $6)
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $2)
- (i32.const 12)
- )
+ (local.set $11
+ (local.get $1)
)
)
)
- (call $_abort)
)
- (if
- (i32.eq
- (i32.load
+ (block
+ (if
+ (i32.lt_u
(local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 8)
+ (i32.load offset=8
+ (local.get $6)
)
)
+ (local.get $4)
)
- (local.get $6)
+ (call $_abort)
)
- (block
- (i32.store
- (local.get $3)
- (local.get $0)
+ (if
+ (i32.ne
+ (local.get $6)
+ (i32.load offset=12
+ (local.get $1)
+ )
)
- (i32.store
- (local.get $1)
- (local.get $2)
+ (call $_abort)
+ )
+ (if
+ (i32.eq
+ (i32.load offset=8
+ (local.get $0)
+ )
+ (local.get $6)
)
- (local.set $8
- (local.get $0)
+ (block
+ (i32.store offset=12
+ (local.get $1)
+ (local.get $0)
+ )
+ (i32.store offset=8
+ (local.get $0)
+ (local.get $1)
+ )
+ (local.set $11
+ (local.get $0)
+ )
)
+ (call $_abort)
)
- (call $_abort)
)
)
- )
- (br_if $label$break$L331
- (i32.eqz
- (local.get $5)
+ (br_if $label$break$L331
+ (i32.eqz
+ (local.get $5)
+ )
)
- )
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (i32.shl
- (local.tee $1
- (i32.load offset=28
- (local.get $6)
+ (if
+ (i32.eq
+ (i32.load
+ (local.tee $0
+ (i32.add
+ (i32.shl
+ (local.tee $1
+ (i32.load offset=28
+ (local.get $6)
+ )
)
+ (i32.const 2)
)
- (i32.const 2)
+ (i32.const 480)
)
- (i32.const 480)
)
)
+ (local.get $6)
)
- (local.get $6)
- )
- (block $do-once59
- (i32.store
- (local.get $0)
- (local.get $8)
- )
- (br_if $do-once59
- (local.get $8)
+ (block $do-once59
+ (i32.store
+ (local.get $0)
+ (local.get $11)
+ )
+ (br_if $do-once59
+ (local.get $11)
+ )
+ (i32.store
+ (i32.const 180)
+ (i32.and
+ (i32.load
+ (i32.const 180)
+ )
+ (i32.xor
+ (i32.shl
+ (i32.const 1)
+ (local.get $1)
+ )
+ (i32.const -1)
+ )
+ )
+ )
+ (br $label$break$L331)
)
- (i32.store
- (i32.const 180)
- (i32.and
- (i32.load
- (i32.const 180)
+ (block
+ (if
+ (i32.lt_u
+ (local.get $5)
+ (i32.load
+ (i32.const 192)
+ )
)
- (i32.xor
- (i32.shl
- (i32.const 1)
- (local.get $1)
+ (call $_abort)
+ )
+ (if
+ (i32.eq
+ (i32.load offset=16
+ (local.get $5)
)
- (i32.const -1)
+ (local.get $6)
+ )
+ (i32.store offset=16
+ (local.get $5)
+ (local.get $11)
+ )
+ (i32.store offset=20
+ (local.get $5)
+ (local.get $11)
+ )
+ )
+ (br_if $label$break$L331
+ (i32.eqz
+ (local.get $11)
)
)
)
- (br $label$break$L331)
)
- (block
- (if
- (i32.lt_u
- (local.get $5)
+ (if
+ (i32.lt_u
+ (local.get $11)
+ (local.tee $0
(i32.load
(i32.const 192)
)
)
- (call $_abort)
)
- (if
- (i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $5)
- (i32.const 16)
- )
- )
- )
+ (call $_abort)
+ )
+ (i32.store
+ (i32.add
+ (local.get $11)
+ (i32.const 24)
+ )
+ (local.get $5)
+ )
+ (if
+ (local.tee $1
+ (i32.load offset=16
(local.get $6)
)
- (i32.store
- (local.get $0)
- (local.get $8)
- )
- (i32.store offset=20
- (local.get $5)
- (local.get $8)
- )
)
- (br_if $label$break$L331
- (i32.eqz
- (local.get $8)
+ (if
+ (i32.lt_u
+ (local.get $1)
+ (local.get $0)
)
- )
- )
- )
- (if
- (i32.lt_u
- (local.get $8)
- (local.tee $1
- (i32.load
- (i32.const 192)
+ (call $_abort)
+ (block
+ (i32.store
+ (i32.add
+ (local.get $11)
+ (i32.const 16)
+ )
+ (local.get $1)
+ )
+ (i32.store offset=24
+ (local.get $1)
+ (local.get $11)
+ )
)
)
)
- (call $_abort)
- )
- (i32.store offset=24
- (local.get $8)
- (local.get $5)
- )
- (if
- (local.tee $3
- (i32.load
+ (br_if $label$break$L331
+ (i32.eqz
(local.tee $0
- (i32.add
- (local.get $6)
- (i32.const 16)
+ (i32.load offset=4
+ (i32.add
+ (local.get $6)
+ (i32.const 16)
+ )
)
)
)
)
(if
(i32.lt_u
- (local.get $3)
- (local.get $1)
+ (local.get $0)
+ (i32.load
+ (i32.const 192)
+ )
)
(call $_abort)
(block
- (i32.store offset=16
- (local.get $8)
- (local.get $3)
+ (i32.store
+ (i32.add
+ (local.get $11)
+ (i32.const 20)
+ )
+ (local.get $0)
)
(i32.store offset=24
- (local.get $3)
- (local.get $8)
- )
- )
- )
- )
- (br_if $label$break$L331
- (i32.eqz
- (local.tee $0
- (i32.load offset=4
(local.get $0)
+ (local.get $11)
)
)
)
)
- (if
- (i32.lt_u
- (local.get $0)
- (i32.load
- (i32.const 192)
- )
- )
- (call $_abort)
- (block
- (i32.store offset=20
- (local.get $8)
- (local.get $0)
- )
- (i32.store offset=24
- (local.get $0)
- (local.get $8)
- )
- )
- )
)
)
- )
- (local.set $7
+ (local.set $7
+ (i32.add
+ (local.get $7)
+ (local.get $12)
+ )
+ )
(i32.add
- (local.get $7)
- (local.get $10)
+ (local.get $6)
+ (local.get $12)
)
)
- (i32.add
- (local.get $6)
- (local.get $10)
- )
+ (local.get $6)
)
- (local.get $6)
+ (i32.const 4)
)
- (i32.const 4)
)
- )
- (i32.and
- (i32.load
- (local.get $0)
+ (i32.and
+ (i32.load
+ (local.get $0)
+ )
+ (i32.const -2)
)
- (i32.const -2)
- )
- )
- (i32.store offset=4
- (local.get $9)
- (i32.or
- (local.get $7)
- (i32.const 1)
)
- )
- (i32.store
- (i32.add
- (local.get $7)
- (local.get $9)
+ (i32.store offset=4
+ (local.get $8)
+ (i32.or
+ (local.get $7)
+ (i32.const 1)
+ )
)
- (local.get $7)
- )
- (local.set $0
- (i32.shr_u
+ (i32.store
+ (i32.add
+ (local.get $7)
+ (local.get $8)
+ )
(local.get $7)
- (i32.const 3)
)
- )
- (if
- (i32.lt_u
- (local.get $7)
- (i32.const 256)
+ (local.set $0
+ (i32.shr_u
+ (local.get $7)
+ (i32.const 3)
+ )
)
- (block
- (local.set $3
- (i32.add
- (i32.shl
- (local.get $0)
- (i32.const 3)
- )
- (i32.const 216)
- )
+ (if
+ (i32.lt_u
+ (local.get $7)
+ (i32.const 256)
)
- (if
- (i32.and
- (local.tee $1
- (i32.load
- (i32.const 176)
- )
- )
- (local.tee $0
+ (block
+ (local.set $2
+ (i32.add
(i32.shl
- (i32.const 1)
(local.get $0)
+ (i32.const 3)
)
+ (i32.const 216)
)
)
- (block $do-once63
- (if
- (i32.ge_u
- (local.tee $0
- (i32.load
- (local.tee $1
- (i32.add
- (local.get $3)
- (i32.const 8)
- )
- )
- )
- )
+ (if
+ (i32.and
+ (local.tee $1
(i32.load
- (i32.const 192)
+ (i32.const 176)
)
)
- (block
- (local.set $16
- (local.get $1)
- )
- (local.set $11
+ (local.tee $0
+ (i32.shl
+ (i32.const 1)
(local.get $0)
)
- (br $do-once63)
)
)
- (call $_abort)
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.or
- (local.get $0)
- (local.get $1)
+ (block $do-once63
+ (local.set $1
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
)
+ (if
+ (i32.ge_u
+ (local.tee $0
+ (i32.load offset=8
+ (local.get $2)
+ )
+ )
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ (block
+ (local.set $16
+ (local.get $1)
+ )
+ (local.set $9
+ (local.get $0)
+ )
+ (br $do-once63)
+ )
+ )
+ (call $_abort)
)
- (local.set $16
- (i32.add
- (local.get $3)
- (i32.const 8)
+ (block
+ (i32.store
+ (i32.const 176)
+ (i32.or
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (local.set $16
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ )
+ (local.set $9
+ (local.get $2)
)
)
- (local.set $11
- (local.get $3)
+ )
+ (i32.store
+ (local.get $16)
+ (local.get $8)
+ )
+ (i32.store
+ (i32.add
+ (local.get $9)
+ (i32.const 12)
)
+ (local.get $8)
)
+ (i32.store offset=8
+ (local.get $8)
+ (local.get $9)
+ )
+ (i32.store offset=12
+ (local.get $8)
+ (local.get $2)
+ )
+ (br $do-once48)
)
- (i32.store
- (local.get $16)
- (local.get $9)
- )
- (i32.store offset=12
- (local.get $11)
- (local.get $9)
- )
- (i32.store offset=8
- (local.get $9)
- (local.get $11)
- )
- (i32.store offset=12
- (local.get $9)
- (local.get $3)
- )
- (br $do-once48)
)
- )
- (local.set $3
- (i32.add
- (i32.shl
- (local.tee $2
- (if (result i32)
- (local.tee $0
- (i32.shr_u
- (local.get $7)
- (i32.const 8)
- )
- )
+ (local.set $2
+ (i32.add
+ (i32.shl
+ (local.tee $3
(if (result i32)
- (i32.gt_u
- (local.get $7)
- (i32.const 16777215)
+ (local.tee $0
+ (i32.shr_u
+ (local.get $7)
+ (i32.const 8)
+ )
)
- (i32.const 31)
- (block (result i32)
- (local.set $2
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $0
- (i32.shl
- (local.get $0)
- (local.tee $1
- (i32.and
- (i32.shr_u
- (i32.add
- (local.get $0)
- (i32.const 1048320)
+ (if (result i32)
+ (i32.gt_u
+ (local.get $7)
+ (i32.const 16777215)
+ )
+ (i32.const 31)
+ (block (result i32)
+ (local.set $3
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (local.tee $1
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.get $0)
+ (i32.const 1048320)
+ )
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 8)
)
- (i32.const 8)
)
)
)
+ (i32.const 520192)
)
- (i32.const 520192)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 4)
)
- (i32.const 4)
)
- )
- (local.set $3
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $0
- (i32.shl
- (local.get $0)
- (local.get $2)
+ (local.set $2
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $0
+ (i32.shl
+ (local.get $0)
+ (local.get $3)
+ )
)
+ (i32.const 245760)
)
- (i32.const 245760)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 2)
)
- (i32.const 2)
)
- )
- (i32.or
- (i32.and
- (i32.shr_u
- (local.get $7)
- (i32.add
- (local.tee $0
- (i32.add
- (i32.sub
- (i32.const 14)
- (i32.or
+ (i32.or
+ (i32.and
+ (i32.shr_u
+ (local.get $7)
+ (i32.add
+ (local.tee $0
+ (i32.add
+ (i32.sub
+ (i32.const 14)
(i32.or
- (local.get $1)
+ (i32.or
+ (local.get $1)
+ (local.get $3)
+ )
(local.get $2)
)
- (local.get $3)
)
- )
- (i32.shr_u
- (i32.shl
- (local.get $0)
- (local.get $3)
+ (i32.shr_u
+ (i32.shl
+ (local.get $0)
+ (local.get $2)
+ )
+ (i32.const 15)
)
- (i32.const 15)
)
)
+ (i32.const 7)
)
- (i32.const 7)
)
+ (i32.const 1)
+ )
+ (i32.shl
+ (local.get $0)
+ (i32.const 1)
)
- (i32.const 1)
- )
- (i32.shl
- (local.get $0)
- (i32.const 1)
)
)
)
+ (i32.const 0)
)
- (i32.const 0)
)
+ (i32.const 2)
)
- (i32.const 2)
+ (i32.const 480)
)
- (i32.const 480)
)
- )
- (i32.store offset=28
- (local.get $9)
- (local.get $2)
- )
- (i32.store offset=4
- (local.tee $0
+ (i32.store offset=28
+ (local.get $8)
+ (local.get $3)
+ )
+ (i32.store offset=4
(i32.add
- (local.get $9)
+ (local.get $8)
(i32.const 16)
)
+ (i32.const 0)
)
- (i32.const 0)
- )
- (i32.store
- (local.get $0)
- (i32.const 0)
- )
- (if
- (i32.eqz
- (i32.and
- (local.tee $1
- (i32.load
- (i32.const 180)
+ (i32.store offset=16
+ (local.get $8)
+ (i32.const 0)
+ )
+ (if
+ (i32.eqz
+ (i32.and
+ (local.tee $1
+ (i32.load
+ (i32.const 180)
+ )
)
- )
- (local.tee $0
- (i32.shl
- (i32.const 1)
- (local.get $2)
+ (local.tee $0
+ (i32.shl
+ (i32.const 1)
+ (local.get $3)
+ )
)
)
)
- )
- (block
- (i32.store
- (i32.const 180)
- (i32.or
- (local.get $0)
- (local.get $1)
- )
- )
- (i32.store
- (local.get $3)
- (local.get $9)
- )
- (i32.store offset=24
- (local.get $9)
- (local.get $3)
- )
- (i32.store offset=12
- (local.get $9)
- (local.get $9)
- )
- (i32.store offset=8
- (local.get $9)
- (local.get $9)
- )
- (br $do-once48)
- )
- )
- (local.set $2
- (i32.shl
- (local.get $7)
- (select
- (i32.const 0)
- (i32.sub
- (i32.const 25)
- (i32.shr_u
- (local.get $2)
- (i32.const 1)
+ (block
+ (i32.store
+ (i32.const 180)
+ (i32.or
+ (local.get $0)
+ (local.get $1)
)
)
- (i32.eq
+ (i32.store
(local.get $2)
- (i32.const 31)
+ (local.get $8)
)
+ (i32.store offset=24
+ (local.get $8)
+ (local.get $2)
+ )
+ (i32.store offset=12
+ (local.get $8)
+ (local.get $8)
+ )
+ (i32.store offset=8
+ (local.get $8)
+ (local.get $8)
+ )
+ (br $do-once48)
)
)
- )
- (local.set $0
- (i32.load
- (local.get $3)
- )
- )
- (block $__rjto$7
- (block $__rjti$7
- (loop $while-in68
- (br_if $__rjti$7
- (i32.eq
- (i32.and
- (i32.load offset=4
- (local.get $0)
- )
- (i32.const -8)
+ (local.set $3
+ (i32.shl
+ (local.get $7)
+ (select
+ (i32.const 0)
+ (i32.sub
+ (i32.const 25)
+ (i32.shr_u
+ (local.get $3)
+ (i32.const 1)
)
- (local.get $7)
)
- )
- (local.set $3
- (i32.shl
- (local.get $2)
- (i32.const 1)
+ (i32.eq
+ (local.get $3)
+ (i32.const 31)
)
)
- (if
- (local.tee $1
- (i32.load
- (local.tee $2
- (i32.add
+ )
+ )
+ (local.set $0
+ (i32.load
+ (local.get $2)
+ )
+ )
+ (block $__rjto$7
+ (block $__rjti$7
+ (loop $while-in68
+ (br_if $__rjti$7
+ (i32.eq
+ (i32.and
+ (i32.load
(i32.add
(local.get $0)
- (i32.const 16)
+ (i32.const 4)
)
- (i32.shl
- (i32.shr_u
- (local.get $2)
- (i32.const 31)
+ )
+ (i32.const -8)
+ )
+ (local.get $7)
+ )
+ )
+ (local.set $2
+ (i32.shl
+ (local.get $3)
+ (i32.const 1)
+ )
+ )
+ (if
+ (local.tee $1
+ (i32.load
+ (local.tee $3
+ (i32.add
+ (i32.add
+ (local.get $0)
+ (i32.const 16)
+ )
+ (i32.shl
+ (i32.shr_u
+ (local.get $3)
+ (i32.const 31)
+ )
+ (i32.const 2)
)
- (i32.const 2)
)
)
)
)
+ (block
+ (local.set $3
+ (local.get $2)
+ )
+ (local.set $0
+ (local.get $1)
+ )
+ (br $while-in68)
+ )
)
+ )
+ (if
+ (i32.lt_u
+ (local.get $3)
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ (call $_abort)
(block
- (local.set $2
+ (i32.store
(local.get $3)
+ (local.get $8)
)
- (local.set $0
- (local.get $1)
+ (i32.store offset=24
+ (local.get $8)
+ (local.get $0)
+ )
+ (i32.store offset=12
+ (local.get $8)
+ (local.get $8)
+ )
+ (i32.store offset=8
+ (local.get $8)
+ (local.get $8)
)
- (br $while-in68)
+ (br $do-once48)
)
)
+ (br $__rjto$7)
)
(if
- (i32.lt_u
- (local.get $2)
- (i32.load
- (i32.const 192)
+ (i32.and
+ (i32.ge_u
+ (local.tee $2
+ (i32.load offset=8
+ (local.get $0)
+ )
+ )
+ (local.tee $1
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ )
+ (i32.ge_u
+ (local.get $0)
+ (local.get $1)
)
)
- (call $_abort)
(block
- (i32.store
+ (i32.store offset=12
(local.get $2)
- (local.get $9)
+ (local.get $8)
)
- (i32.store offset=24
- (local.get $9)
+ (i32.store offset=8
(local.get $0)
- )
- (i32.store offset=12
- (local.get $9)
- (local.get $9)
+ (local.get $8)
)
(i32.store offset=8
- (local.get $9)
- (local.get $9)
+ (local.get $8)
+ (local.get $2)
)
- (br $do-once48)
- )
- )
- (br $__rjto$7)
- )
- (if
- (i32.and
- (i32.ge_u
- (local.tee $2
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
- )
+ (i32.store offset=12
+ (local.get $8)
+ (local.get $0)
)
- (local.tee $1
- (i32.load
- (i32.const 192)
- )
+ (i32.store offset=24
+ (local.get $8)
+ (i32.const 0)
)
)
- (i32.ge_u
- (local.get $0)
- (local.get $1)
- )
- )
- (block
- (i32.store offset=12
- (local.get $2)
- (local.get $9)
- )
- (i32.store
- (local.get $3)
- (local.get $9)
- )
- (i32.store offset=8
- (local.get $9)
- (local.get $2)
- )
- (i32.store offset=12
- (local.get $9)
- (local.get $0)
- )
- (i32.store offset=24
- (local.get $9)
- (i32.const 0)
- )
+ (call $_abort)
)
- (call $_abort)
)
)
)
- )
- (return
- (i32.add
- (local.get $12)
- (i32.const 8)
+ (return
+ (i32.add
+ (local.get $10)
+ (i32.const 8)
+ )
)
)
)
)
)
- )
- (loop $while-in70
- (block $while-out69
- (if
- (i32.le_u
- (local.tee $2
- (i32.load
- (local.get $4)
+ (loop $while-in70
+ (block $while-out69
+ (if
+ (i32.le_u
+ (local.tee $3
+ (i32.load
+ (local.get $4)
+ )
)
+ (local.get $5)
)
- (local.get $5)
- )
- (br_if $while-out69
- (i32.gt_u
- (local.tee $2
- (i32.add
- (local.get $2)
- (i32.load offset=4
- (local.get $4)
+ (br_if $while-out69
+ (i32.gt_u
+ (local.tee $3
+ (i32.add
+ (local.get $3)
+ (i32.load
+ (i32.add
+ (local.get $4)
+ (i32.const 4)
+ )
+ )
)
)
+ (local.get $5)
)
- (local.get $5)
)
)
- )
- (local.set $4
- (i32.load offset=8
- (local.get $4)
+ (local.set $4
+ (i32.load
+ (i32.add
+ (local.get $4)
+ (i32.const 8)
+ )
+ )
)
+ (br $while-in70)
)
- (br $while-in70)
)
- )
- (local.set $11
- (i32.add
- (local.tee $4
- (i32.add
- (local.get $2)
- (i32.const -47)
+ (local.set $9
+ (i32.add
+ (local.tee $4
+ (i32.add
+ (local.get $3)
+ (i32.const -47)
+ )
)
+ (i32.const 8)
)
- (i32.const 8)
)
- )
- (local.set $8
- (i32.add
- (local.tee $10
- (select
- (local.get $5)
- (local.tee $4
- (i32.add
- (local.get $4)
- (select
- (i32.and
- (i32.sub
- (i32.const 0)
- (local.get $11)
+ (local.set $6
+ (i32.add
+ (local.tee $11
+ (select
+ (local.get $5)
+ (local.tee $4
+ (i32.add
+ (local.get $4)
+ (select
+ (i32.and
+ (i32.sub
+ (i32.const 0)
+ (local.get $9)
+ )
+ (i32.const 7)
+ )
+ (i32.const 0)
+ (i32.and
+ (local.get $9)
+ (i32.const 7)
)
- (i32.const 7)
- )
- (i32.const 0)
- (i32.and
- (local.get $11)
- (i32.const 7)
)
)
)
- )
- (i32.lt_u
- (local.get $4)
- (local.tee $11
+ (i32.lt_u
+ (local.get $4)
(i32.add
(local.get $5)
(i32.const 16)
@@ -12014,791 +11970,790 @@
)
)
)
+ (i32.const 8)
)
- (i32.const 8)
)
- )
- (i32.store
- (i32.const 200)
- (local.tee $6
- (i32.add
- (local.tee $4
- (select
- (i32.and
- (i32.sub
- (i32.const 0)
- (local.tee $4
- (i32.add
- (local.get $1)
- (i32.const 8)
+ (i32.store
+ (i32.const 200)
+ (local.tee $9
+ (i32.add
+ (local.tee $4
+ (select
+ (i32.and
+ (i32.sub
+ (i32.const 0)
+ (local.tee $4
+ (i32.add
+ (local.get $1)
+ (i32.const 8)
+ )
)
)
+ (i32.const 7)
+ )
+ (i32.const 0)
+ (i32.and
+ (local.get $4)
+ (i32.const 7)
)
- (i32.const 7)
- )
- (i32.const 0)
- (i32.and
- (local.get $4)
- (i32.const 7)
)
)
+ (local.get $1)
)
- (local.get $1)
)
)
- )
- (i32.store
- (i32.const 188)
- (local.tee $4
- (i32.sub
- (i32.add
- (local.get $3)
- (i32.const -40)
+ (i32.store
+ (i32.const 188)
+ (local.tee $4
+ (i32.sub
+ (i32.add
+ (local.get $2)
+ (i32.const -40)
+ )
+ (local.get $4)
)
+ )
+ )
+ (i32.store offset=4
+ (local.get $9)
+ (i32.or
(local.get $4)
+ (i32.const 1)
)
)
- )
- (i32.store offset=4
- (local.get $6)
- (i32.or
- (local.get $4)
- (i32.const 1)
+ (i32.store offset=4
+ (i32.add
+ (local.get $4)
+ (local.get $9)
+ )
+ (i32.const 40)
)
- )
- (i32.store offset=4
- (i32.add
- (local.get $4)
+ (i32.store
+ (i32.const 204)
+ (i32.load
+ (i32.const 664)
+ )
+ )
+ (i32.store offset=4
+ (local.get $11)
+ (i32.const 27)
+ )
+ (i32.store offset=8
+ (local.get $11)
+ (i32.load
+ (i32.const 624)
+ )
+ )
+ (i32.store offset=4
(local.get $6)
+ (i32.load
+ (i32.const 628)
+ )
)
- (i32.const 40)
- )
- (i32.store
- (i32.const 204)
- (i32.load
- (i32.const 664)
+ (i32.store offset=8
+ (local.get $6)
+ (i32.load
+ (i32.const 632)
+ )
)
- )
- (i32.store
- (local.tee $4
- (i32.add
- (local.get $10)
- (i32.const 4)
+ (i32.store offset=12
+ (local.get $6)
+ (i32.load
+ (i32.const 636)
)
)
- (i32.const 27)
- )
- (i32.store
- (local.get $8)
- (i32.load
+ (i32.store
(i32.const 624)
+ (local.get $1)
)
- )
- (i32.store offset=4
- (local.get $8)
- (i32.load
+ (i32.store
(i32.const 628)
+ (local.get $2)
)
- )
- (i32.store offset=8
- (local.get $8)
- (i32.load
- (i32.const 632)
- )
- )
- (i32.store offset=12
- (local.get $8)
- (i32.load
+ (i32.store
(i32.const 636)
+ (i32.const 0)
)
- )
- (i32.store
- (i32.const 624)
- (local.get $1)
- )
- (i32.store
- (i32.const 628)
- (local.get $3)
- )
- (i32.store
- (i32.const 636)
- (i32.const 0)
- )
- (i32.store
- (i32.const 632)
- (local.get $8)
- )
- (local.set $1
- (i32.add
- (local.get $10)
- (i32.const 24)
- )
- )
- (loop $while-in72
(i32.store
- (local.tee $1
- (i32.add
- (local.get $1)
- (i32.const 4)
- )
- )
- (i32.const 7)
+ (i32.const 632)
+ (local.get $6)
)
- (br_if $while-in72
- (i32.lt_u
- (i32.add
- (local.get $1)
- (i32.const 4)
- )
- (local.get $2)
+ (local.set $1
+ (i32.add
+ (local.get $11)
+ (i32.const 24)
)
)
- )
- (if
- (i32.ne
- (local.get $5)
- (local.get $10)
- )
- (block
+ (loop $while-in72
(i32.store
- (local.get $4)
- (i32.and
- (i32.load
- (local.get $4)
+ (local.tee $1
+ (i32.add
+ (local.get $1)
+ (i32.const 4)
)
- (i32.const -2)
)
+ (i32.const 7)
)
- (i32.store offset=4
- (local.get $5)
- (i32.or
- (local.tee $6
- (i32.sub
- (local.get $10)
- (local.get $5)
- )
+ (br_if $while-in72
+ (i32.lt_u
+ (i32.add
+ (local.get $1)
+ (i32.const 4)
)
- (i32.const 1)
+ (local.get $3)
)
)
- (i32.store
- (local.get $10)
- (local.get $6)
- )
- (local.set $1
- (i32.shr_u
- (local.get $6)
- (i32.const 3)
- )
+ )
+ (if
+ (i32.ne
+ (local.get $5)
+ (local.get $11)
)
- (if
- (i32.lt_u
- (local.get $6)
- (i32.const 256)
+ (block
+ (i32.store offset=4
+ (local.get $11)
+ (i32.and
+ (i32.load offset=4
+ (local.get $11)
+ )
+ (i32.const -2)
+ )
)
- (block
- (local.set $2
- (i32.add
- (i32.shl
- (local.get $1)
- (i32.const 3)
+ (i32.store offset=4
+ (local.get $5)
+ (i32.or
+ (local.tee $9
+ (i32.sub
+ (local.get $11)
+ (local.get $5)
)
- (i32.const 216)
)
+ (i32.const 1)
)
- (if
- (i32.and
- (local.tee $3
- (i32.load
- (i32.const 176)
- )
- )
- (local.tee $1
+ )
+ (i32.store
+ (local.get $11)
+ (local.get $9)
+ )
+ (local.set $1
+ (i32.shr_u
+ (local.get $9)
+ (i32.const 3)
+ )
+ )
+ (if
+ (i32.lt_u
+ (local.get $9)
+ (i32.const 256)
+ )
+ (block
+ (local.set $3
+ (i32.add
(i32.shl
- (i32.const 1)
(local.get $1)
+ (i32.const 3)
)
+ (i32.const 216)
)
)
(if
- (i32.lt_u
- (local.tee $1
+ (i32.and
+ (local.tee $2
(i32.load
- (local.tee $3
- (i32.add
- (local.get $2)
- (i32.const 8)
+ (i32.const 176)
+ )
+ )
+ (local.tee $1
+ (i32.shl
+ (i32.const 1)
+ (local.get $1)
+ )
+ )
+ )
+ (block
+ (local.set $2
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ )
+ (if
+ (i32.lt_u
+ (local.tee $1
+ (i32.load offset=8
+ (local.get $3)
)
)
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ (call $_abort)
+ (block
+ (local.set $17
+ (local.get $2)
+ )
+ (local.set $7
+ (local.get $1)
+ )
)
- )
- (i32.load
- (i32.const 192)
)
)
- (call $_abort)
(block
+ (i32.store
+ (i32.const 176)
+ (i32.or
+ (local.get $1)
+ (local.get $2)
+ )
+ )
(local.set $17
- (local.get $3)
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
)
(local.set $7
- (local.get $1)
- )
- )
- )
- (block
- (i32.store
- (i32.const 176)
- (i32.or
- (local.get $1)
(local.get $3)
)
)
- (local.set $17
- (i32.add
- (local.get $2)
- (i32.const 8)
- )
- )
- (local.set $7
- (local.get $2)
+ )
+ (i32.store
+ (local.get $17)
+ (local.get $5)
+ )
+ (i32.store
+ (i32.add
+ (local.get $7)
+ (i32.const 12)
)
+ (local.get $5)
)
+ (i32.store offset=8
+ (local.get $5)
+ (local.get $7)
+ )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $3)
+ )
+ (br $do-once40)
)
- (i32.store
- (local.get $17)
- (local.get $5)
- )
- (i32.store offset=12
- (local.get $7)
- (local.get $5)
- )
- (i32.store offset=8
- (local.get $5)
- (local.get $7)
- )
- (i32.store offset=12
- (local.get $5)
- (local.get $2)
- )
- (br $do-once40)
)
- )
- (local.set $2
- (i32.add
- (i32.shl
- (local.tee $4
- (if (result i32)
- (local.tee $1
- (i32.shr_u
- (local.get $6)
- (i32.const 8)
- )
- )
+ (local.set $3
+ (i32.add
+ (i32.shl
+ (local.tee $4
(if (result i32)
- (i32.gt_u
- (local.get $6)
- (i32.const 16777215)
+ (local.tee $1
+ (i32.shr_u
+ (local.get $9)
+ (i32.const 8)
+ )
)
- (i32.const 31)
- (block (result i32)
- (local.set $4
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $1
- (i32.shl
- (local.get $1)
- (local.tee $3
- (i32.and
- (i32.shr_u
- (i32.add
- (local.get $1)
- (i32.const 1048320)
+ (if (result i32)
+ (i32.gt_u
+ (local.get $9)
+ (i32.const 16777215)
+ )
+ (i32.const 31)
+ (block (result i32)
+ (local.set $4
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $1
+ (i32.shl
+ (local.get $1)
+ (local.tee $2
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.get $1)
+ (i32.const 1048320)
+ )
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 8)
)
- (i32.const 8)
)
)
)
+ (i32.const 520192)
)
- (i32.const 520192)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 4)
)
- (i32.const 4)
)
- )
- (local.set $2
- (i32.and
- (i32.shr_u
- (i32.add
- (local.tee $1
- (i32.shl
- (local.get $1)
- (local.get $4)
+ (local.set $3
+ (i32.and
+ (i32.shr_u
+ (i32.add
+ (local.tee $1
+ (i32.shl
+ (local.get $1)
+ (local.get $4)
+ )
)
+ (i32.const 245760)
)
- (i32.const 245760)
+ (i32.const 16)
)
- (i32.const 16)
+ (i32.const 2)
)
- (i32.const 2)
)
- )
- (i32.or
- (i32.and
- (i32.shr_u
- (local.get $6)
- (i32.add
- (local.tee $1
- (i32.add
- (i32.sub
- (i32.const 14)
- (i32.or
+ (i32.or
+ (i32.and
+ (i32.shr_u
+ (local.get $9)
+ (i32.add
+ (local.tee $1
+ (i32.add
+ (i32.sub
+ (i32.const 14)
(i32.or
+ (i32.or
+ (local.get $2)
+ (local.get $4)
+ )
(local.get $3)
- (local.get $4)
)
- (local.get $2)
)
- )
- (i32.shr_u
- (i32.shl
- (local.get $1)
- (local.get $2)
+ (i32.shr_u
+ (i32.shl
+ (local.get $1)
+ (local.get $3)
+ )
+ (i32.const 15)
)
- (i32.const 15)
)
)
+ (i32.const 7)
)
- (i32.const 7)
)
+ (i32.const 1)
+ )
+ (i32.shl
+ (local.get $1)
+ (i32.const 1)
)
- (i32.const 1)
- )
- (i32.shl
- (local.get $1)
- (i32.const 1)
)
)
)
+ (i32.const 0)
)
- (i32.const 0)
)
+ (i32.const 2)
)
- (i32.const 2)
+ (i32.const 480)
)
- (i32.const 480)
)
- )
- (i32.store offset=28
- (local.get $5)
- (local.get $4)
- )
- (i32.store offset=20
- (local.get $5)
- (i32.const 0)
- )
- (i32.store
- (local.get $11)
- (i32.const 0)
- )
- (if
- (i32.eqz
- (i32.and
- (local.tee $3
- (i32.load
- (i32.const 180)
+ (i32.store offset=28
+ (local.get $5)
+ (local.get $4)
+ )
+ (i32.store offset=20
+ (local.get $5)
+ (i32.const 0)
+ )
+ (i32.store offset=16
+ (local.get $5)
+ (i32.const 0)
+ )
+ (if
+ (i32.eqz
+ (i32.and
+ (local.tee $2
+ (i32.load
+ (i32.const 180)
+ )
)
- )
- (local.tee $1
- (i32.shl
- (i32.const 1)
- (local.get $4)
+ (local.tee $1
+ (i32.shl
+ (i32.const 1)
+ (local.get $4)
+ )
)
)
)
- )
- (block
- (i32.store
- (i32.const 180)
- (i32.or
- (local.get $1)
+ (block
+ (i32.store
+ (i32.const 180)
+ (i32.or
+ (local.get $1)
+ (local.get $2)
+ )
+ )
+ (i32.store
+ (local.get $3)
+ (local.get $5)
+ )
+ (i32.store offset=24
+ (local.get $5)
(local.get $3)
)
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $5)
+ )
+ (i32.store offset=8
+ (local.get $5)
+ (local.get $5)
+ )
+ (br $do-once40)
)
- (i32.store
- (local.get $2)
- (local.get $5)
- )
- (i32.store offset=24
- (local.get $5)
- (local.get $2)
- )
- (i32.store offset=12
- (local.get $5)
- (local.get $5)
- )
- (i32.store offset=8
- (local.get $5)
- (local.get $5)
- )
- (br $do-once40)
)
- )
- (local.set $4
- (i32.shl
- (local.get $6)
- (select
- (i32.const 0)
- (i32.sub
- (i32.const 25)
- (i32.shr_u
+ (local.set $4
+ (i32.shl
+ (local.get $9)
+ (select
+ (i32.const 0)
+ (i32.sub
+ (i32.const 25)
+ (i32.shr_u
+ (local.get $4)
+ (i32.const 1)
+ )
+ )
+ (i32.eq
(local.get $4)
- (i32.const 1)
+ (i32.const 31)
)
)
- (i32.eq
- (local.get $4)
- (i32.const 31)
- )
)
)
- )
- (local.set $1
- (i32.load
- (local.get $2)
+ (local.set $1
+ (i32.load
+ (local.get $3)
+ )
)
- )
- (block $__rjto$9
- (block $__rjti$9
- (loop $while-in74
- (br_if $__rjti$9
- (i32.eq
- (i32.and
- (i32.load offset=4
- (local.get $1)
+ (block $__rjto$9
+ (block $__rjti$9
+ (loop $while-in74
+ (br_if $__rjti$9
+ (i32.eq
+ (i32.and
+ (i32.load
+ (i32.add
+ (local.get $1)
+ (i32.const 4)
+ )
+ )
+ (i32.const -8)
)
- (i32.const -8)
+ (local.get $9)
)
- (local.get $6)
)
- )
- (local.set $2
- (i32.shl
- (local.get $4)
- (i32.const 1)
+ (local.set $3
+ (i32.shl
+ (local.get $4)
+ (i32.const 1)
+ )
)
- )
- (if
- (local.tee $3
- (i32.load
- (local.tee $4
- (i32.add
+ (if
+ (local.tee $2
+ (i32.load
+ (local.tee $4
(i32.add
- (local.get $1)
- (i32.const 16)
- )
- (i32.shl
- (i32.shr_u
- (local.get $4)
- (i32.const 31)
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
+ (i32.shl
+ (i32.shr_u
+ (local.get $4)
+ (i32.const 31)
+ )
+ (i32.const 2)
)
- (i32.const 2)
)
)
)
)
+ (block
+ (local.set $4
+ (local.get $3)
+ )
+ (local.set $1
+ (local.get $2)
+ )
+ (br $while-in74)
+ )
)
+ )
+ (if
+ (i32.lt_u
+ (local.get $4)
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ (call $_abort)
(block
- (local.set $4
- (local.get $2)
+ (i32.store
+ (local.get $4)
+ (local.get $5)
)
- (local.set $1
- (local.get $3)
+ (i32.store offset=24
+ (local.get $5)
+ (local.get $1)
+ )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $5)
)
- (br $while-in74)
+ (i32.store offset=8
+ (local.get $5)
+ (local.get $5)
+ )
+ (br $do-once40)
)
)
+ (br $__rjto$9)
)
(if
- (i32.lt_u
- (local.get $4)
- (i32.load
- (i32.const 192)
+ (i32.and
+ (i32.ge_u
+ (local.tee $3
+ (i32.load offset=8
+ (local.get $1)
+ )
+ )
+ (local.tee $2
+ (i32.load
+ (i32.const 192)
+ )
+ )
+ )
+ (i32.ge_u
+ (local.get $1)
+ (local.get $2)
)
)
- (call $_abort)
(block
- (i32.store
- (local.get $4)
+ (i32.store offset=12
+ (local.get $3)
(local.get $5)
)
- (i32.store offset=24
- (local.get $5)
+ (i32.store offset=8
(local.get $1)
- )
- (i32.store offset=12
- (local.get $5)
(local.get $5)
)
(i32.store offset=8
(local.get $5)
- (local.get $5)
+ (local.get $3)
)
- (br $do-once40)
- )
- )
- (br $__rjto$9)
- )
- (if
- (i32.and
- (i32.ge_u
- (local.tee $4
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $1)
- (i32.const 8)
- )
- )
- )
+ (i32.store offset=12
+ (local.get $5)
+ (local.get $1)
)
- (local.tee $3
- (i32.load
- (i32.const 192)
- )
+ (i32.store offset=24
+ (local.get $5)
+ (i32.const 0)
)
)
- (i32.ge_u
- (local.get $1)
- (local.get $3)
- )
- )
- (block
- (i32.store offset=12
- (local.get $4)
- (local.get $5)
- )
- (i32.store
- (local.get $2)
- (local.get $5)
- )
- (i32.store offset=8
- (local.get $5)
- (local.get $4)
- )
- (i32.store offset=12
- (local.get $5)
- (local.get $1)
- )
- (i32.store offset=24
- (local.get $5)
- (i32.const 0)
- )
+ (call $_abort)
)
- (call $_abort)
)
)
)
)
- )
- (block
- (if
- (i32.or
- (i32.eqz
- (local.tee $2
- (i32.load
- (i32.const 192)
+ (block
+ (if
+ (i32.or
+ (i32.eqz
+ (local.tee $3
+ (i32.load
+ (i32.const 192)
+ )
)
)
+ (i32.lt_u
+ (local.get $1)
+ (local.get $3)
+ )
)
- (i32.lt_u
+ (i32.store
+ (i32.const 192)
(local.get $1)
- (local.get $2)
)
)
(i32.store
- (i32.const 192)
+ (i32.const 624)
(local.get $1)
)
- )
- (i32.store
- (i32.const 624)
- (local.get $1)
- )
- (i32.store
- (i32.const 628)
- (local.get $3)
- )
- (i32.store
- (i32.const 636)
- (i32.const 0)
- )
- (i32.store
- (i32.const 212)
- (i32.load
- (i32.const 648)
+ (i32.store
+ (i32.const 628)
+ (local.get $2)
)
- )
- (i32.store
- (i32.const 208)
- (i32.const -1)
- )
- (local.set $2
- (i32.const 0)
- )
- (loop $while-in43
- (i32.store offset=12
- (local.tee $4
- (i32.add
- (i32.shl
- (local.get $2)
- (i32.const 3)
- )
- (i32.const 216)
- )
+ (i32.store
+ (i32.const 636)
+ (i32.const 0)
+ )
+ (i32.store
+ (i32.const 212)
+ (i32.load
+ (i32.const 648)
)
- (local.get $4)
)
- (i32.store offset=8
- (local.get $4)
- (local.get $4)
+ (i32.store
+ (i32.const 208)
+ (i32.const -1)
)
- (br_if $while-in43
- (i32.ne
- (local.tee $2
+ (local.set $3
+ (i32.const 0)
+ )
+ (loop $while-in43
+ (i32.store offset=12
+ (local.tee $4
(i32.add
- (local.get $2)
- (i32.const 1)
+ (i32.shl
+ (local.get $3)
+ (i32.const 3)
+ )
+ (i32.const 216)
)
)
- (i32.const 32)
+ (local.get $4)
+ )
+ (i32.store offset=8
+ (local.get $4)
+ (local.get $4)
+ )
+ (br_if $while-in43
+ (i32.ne
+ (local.tee $3
+ (i32.add
+ (local.get $3)
+ (i32.const 1)
+ )
+ )
+ (i32.const 32)
+ )
)
)
- )
- (i32.store
- (i32.const 200)
- (local.tee $4
- (i32.add
- (local.tee $2
- (select
- (i32.and
- (i32.sub
- (i32.const 0)
- (local.tee $2
- (i32.add
- (local.get $1)
- (i32.const 8)
+ (i32.store
+ (i32.const 200)
+ (local.tee $4
+ (i32.add
+ (local.tee $3
+ (select
+ (i32.and
+ (i32.sub
+ (i32.const 0)
+ (local.tee $3
+ (i32.add
+ (local.get $1)
+ (i32.const 8)
+ )
)
)
+ (i32.const 7)
+ )
+ (i32.const 0)
+ (i32.and
+ (local.get $3)
+ (i32.const 7)
)
- (i32.const 7)
- )
- (i32.const 0)
- (i32.and
- (local.get $2)
- (i32.const 7)
)
)
+ (local.get $1)
)
- (local.get $1)
)
)
- )
- (i32.store
- (i32.const 188)
- (local.tee $1
- (i32.sub
- (i32.add
+ (i32.store
+ (i32.const 188)
+ (local.tee $1
+ (i32.sub
+ (i32.add
+ (local.get $2)
+ (i32.const -40)
+ )
(local.get $3)
- (i32.const -40)
)
- (local.get $2)
)
)
- )
- (i32.store offset=4
- (local.get $4)
- (i32.or
- (local.get $1)
- (i32.const 1)
- )
- )
- (i32.store offset=4
- (i32.add
- (local.get $1)
+ (i32.store offset=4
(local.get $4)
+ (i32.or
+ (local.get $1)
+ (i32.const 1)
+ )
)
- (i32.const 40)
- )
- (i32.store
- (i32.const 204)
- (i32.load
- (i32.const 664)
+ (i32.store offset=4
+ (i32.add
+ (local.get $1)
+ (local.get $4)
+ )
+ (i32.const 40)
+ )
+ (i32.store
+ (i32.const 204)
+ (i32.load
+ (i32.const 664)
+ )
)
)
)
- )
- (br_if $folding-inner0
- (i32.gt_u
- (local.tee $1
- (i32.load
- (i32.const 188)
+ (br_if $folding-inner0
+ (i32.gt_u
+ (local.tee $1
+ (i32.load
+ (i32.const 188)
+ )
)
+ (local.get $0)
)
- (local.get $0)
)
)
+ (i32.store
+ (call $___errno_location)
+ (i32.const 12)
+ )
+ (return
+ (i32.const 0)
+ )
)
(i32.store
- (call $___errno_location)
- (i32.const 12)
- )
- (return
- (i32.const 0)
- )
- )
- (i32.store
- (i32.const 188)
- (local.tee $3
- (i32.sub
- (local.get $1)
- (local.get $0)
+ (i32.const 188)
+ (local.tee $2
+ (i32.sub
+ (local.get $1)
+ (local.get $0)
+ )
)
)
- )
- (i32.store
- (i32.const 200)
- (local.tee $1
- (i32.add
- (local.tee $2
- (i32.load
- (i32.const 200)
+ (i32.store
+ (i32.const 200)
+ (local.tee $1
+ (i32.add
+ (local.tee $3
+ (i32.load
+ (i32.const 200)
+ )
)
+ (local.get $0)
)
- (local.get $0)
)
)
- )
- (i32.store offset=4
- (local.get $1)
- (i32.or
- (local.get $3)
- (i32.const 1)
+ (i32.store offset=4
+ (local.get $1)
+ (i32.or
+ (local.get $2)
+ (i32.const 1)
+ )
)
- )
- (i32.store offset=4
- (local.get $2)
- (i32.or
- (local.get $0)
- (i32.const 3)
+ (i32.store offset=4
+ (local.get $3)
+ (i32.or
+ (local.get $0)
+ (i32.const 3)
+ )
)
)
(i32.add
- (local.get $2)
+ (local.get $3)
(i32.const 8)
)
)
@@ -12842,7 +12797,7 @@
)
(if
(i32.eq
- (local.tee $5
+ (local.tee $4
(i32.and
(local.tee $8
(i32.load
@@ -12876,17 +12831,17 @@
(i32.const 1)
)
(block
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
)
(block $do-once
(if
(i32.eqz
- (local.get $5)
+ (local.get $4)
)
(return)
)
@@ -12923,14 +12878,9 @@
(if
(i32.ne
(i32.and
- (local.tee $3
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $7)
- (i32.const 4)
- )
- )
+ (local.tee $2
+ (i32.load offset=4
+ (local.get $7)
)
)
(i32.const 3)
@@ -12938,10 +12888,10 @@
(i32.const 3)
)
(block
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
(br $do-once)
@@ -12951,10 +12901,10 @@
(i32.const 184)
(local.get $0)
)
- (i32.store
- (local.get $2)
+ (i32.store offset=4
+ (local.get $7)
(i32.and
- (local.get $3)
+ (local.get $2)
(i32.const -2)
)
)
@@ -12975,7 +12925,7 @@
(return)
)
)
- (local.set $5
+ (local.set $4
(i32.shr_u
(local.get $8)
(i32.const 3)
@@ -12994,15 +12944,15 @@
)
(if
(i32.ne
- (local.tee $2
+ (local.tee $3
(i32.load offset=8
(local.get $1)
)
)
- (local.tee $3
+ (local.tee $2
(i32.add
(i32.shl
- (local.get $5)
+ (local.get $4)
(i32.const 3)
)
(i32.const 216)
@@ -13012,7 +12962,7 @@
(block
(if
(i32.lt_u
- (local.get $2)
+ (local.get $3)
(local.get $11)
)
(call $_abort)
@@ -13021,7 +12971,7 @@
(i32.ne
(local.get $1)
(i32.load offset=12
- (local.get $2)
+ (local.get $3)
)
)
(call $_abort)
@@ -13030,7 +12980,7 @@
)
(if
(i32.eq
- (local.get $2)
+ (local.get $3)
(local.get $6)
)
(block
@@ -13043,16 +12993,16 @@
(i32.xor
(i32.shl
(i32.const 1)
- (local.get $5)
+ (local.get $4)
)
(i32.const -1)
)
)
)
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
(br $do-once)
@@ -13060,10 +13010,10 @@
)
(if
(i32.eq
- (local.get $3)
+ (local.get $2)
(local.get $6)
)
- (local.set $4
+ (local.set $5
(i32.add
(local.get $6)
(i32.const 8)
@@ -13077,50 +13027,51 @@
)
(call $_abort)
)
+ (local.set $2
+ (i32.add
+ (local.get $6)
+ (i32.const 8)
+ )
+ )
(if
(i32.eq
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $6)
- (i32.const 8)
- )
- )
+ (i32.load offset=8
+ (local.get $6)
)
(local.get $1)
)
- (local.set $4
- (local.get $3)
+ (local.set $5
+ (local.get $2)
)
(call $_abort)
)
)
)
(i32.store offset=12
- (local.get $2)
+ (local.get $3)
(local.get $6)
)
(i32.store
- (local.get $4)
- (local.get $2)
+ (local.get $5)
+ (local.get $3)
)
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
(br $do-once)
)
)
- (local.set $12
+ (local.set $10
(i32.load offset=24
(local.get $1)
)
)
(if
(i32.eq
- (local.tee $4
+ (local.tee $5
(i32.load offset=12
(local.get $1)
)
@@ -13128,35 +13079,36 @@
(local.get $1)
)
(block $do-once0
+ (local.set $5
+ (i32.add
+ (local.tee $8
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
+ )
+ (i32.const 4)
+ )
+ )
(if
(i32.eqz
- (local.tee $5
- (i32.load
- (local.tee $4
- (i32.add
- (local.tee $8
- (i32.add
- (local.get $1)
- (i32.const 16)
- )
- )
- (i32.const 4)
- )
- )
+ (local.tee $4
+ (i32.load offset=4
+ (local.get $8)
)
)
)
(block
(br_if $do-once0
(i32.eqz
- (local.tee $5
- (i32.load
- (local.get $8)
+ (local.tee $4
+ (i32.load offset=16
+ (local.get $1)
)
)
)
)
- (local.set $4
+ (local.set $5
(local.get $8)
)
)
@@ -13165,20 +13117,20 @@
(if
(local.tee $8
(i32.load
- (local.tee $10
+ (local.tee $12
(i32.add
- (local.get $5)
+ (local.get $4)
(i32.const 20)
)
)
)
)
(block
- (local.set $5
+ (local.set $4
(local.get $8)
)
- (local.set $4
- (local.get $10)
+ (local.set $5
+ (local.get $12)
)
(br $while-in)
)
@@ -13186,20 +13138,20 @@
(if
(local.tee $8
(i32.load
- (local.tee $10
+ (local.tee $12
(i32.add
- (local.get $5)
+ (local.get $4)
(i32.const 16)
)
)
)
)
(block
- (local.set $5
+ (local.set $4
(local.get $8)
)
- (local.set $4
- (local.get $10)
+ (local.set $5
+ (local.get $12)
)
(br $while-in)
)
@@ -13207,17 +13159,17 @@
)
(if
(i32.lt_u
- (local.get $4)
+ (local.get $5)
(local.get $11)
)
(call $_abort)
(block
(i32.store
- (local.get $4)
+ (local.get $5)
(i32.const 0)
)
(local.set $6
- (local.get $5)
+ (local.get $4)
)
)
)
@@ -13225,7 +13177,7 @@
(block
(if
(i32.lt_u
- (local.tee $10
+ (local.tee $4
(i32.load offset=8
(local.get $1)
)
@@ -13237,40 +13189,30 @@
(if
(i32.ne
(local.get $1)
- (i32.load
- (local.tee $8
- (i32.add
- (local.get $10)
- (i32.const 12)
- )
- )
+ (i32.load offset=12
+ (local.get $4)
)
)
(call $_abort)
)
(if
(i32.eq
- (i32.load
- (local.tee $5
- (i32.add
- (local.get $4)
- (i32.const 8)
- )
- )
+ (i32.load offset=8
+ (local.get $5)
)
(local.get $1)
)
(block
- (i32.store
- (local.get $8)
+ (i32.store offset=12
(local.get $4)
+ (local.get $5)
)
- (i32.store
+ (i32.store offset=8
(local.get $5)
- (local.get $10)
+ (local.get $4)
)
(local.set $6
- (local.get $4)
+ (local.get $5)
)
)
(call $_abort)
@@ -13278,15 +13220,15 @@
)
)
(if
- (local.get $12)
+ (local.get $10)
(block
(if
(i32.eq
(i32.load
- (local.tee $4
+ (local.tee $5
(i32.add
(i32.shl
- (local.tee $5
+ (local.tee $4
(i32.load offset=28
(local.get $1)
)
@@ -13301,7 +13243,7 @@
)
(block
(i32.store
- (local.get $4)
+ (local.get $5)
(local.get $6)
)
(if
@@ -13318,16 +13260,16 @@
(i32.xor
(i32.shl
(i32.const 1)
- (local.get $5)
+ (local.get $4)
)
(i32.const -1)
)
)
)
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
(br $do-once)
@@ -13337,7 +13279,7 @@
(block
(if
(i32.lt_u
- (local.get $12)
+ (local.get $10)
(i32.load
(i32.const 192)
)
@@ -13346,22 +13288,17 @@
)
(if
(i32.eq
- (i32.load
- (local.tee $4
- (i32.add
- (local.get $12)
- (i32.const 16)
- )
- )
+ (i32.load offset=16
+ (local.get $10)
)
(local.get $1)
)
- (i32.store
- (local.get $4)
+ (i32.store offset=16
+ (local.get $10)
(local.get $6)
)
(i32.store offset=20
- (local.get $12)
+ (local.get $10)
(local.get $6)
)
)
@@ -13370,10 +13307,10 @@
(local.get $6)
)
(block
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
(br $do-once)
@@ -13392,85 +13329,92 @@
)
(call $_abort)
)
- (i32.store offset=24
- (local.get $6)
- (local.get $12)
+ (i32.store
+ (i32.add
+ (local.get $6)
+ (i32.const 24)
+ )
+ (local.get $10)
)
(if
- (local.tee $8
- (i32.load
- (local.tee $4
- (i32.add
- (local.get $1)
- (i32.const 16)
- )
- )
+ (local.tee $4
+ (i32.load offset=16
+ (local.get $1)
)
)
(if
(i32.lt_u
- (local.get $8)
+ (local.get $4)
(local.get $5)
)
(call $_abort)
(block
- (i32.store offset=16
- (local.get $6)
- (local.get $8)
+ (i32.store
+ (i32.add
+ (local.get $6)
+ (i32.const 16)
+ )
+ (local.get $4)
)
(i32.store offset=24
- (local.get $8)
+ (local.get $4)
(local.get $6)
)
)
)
)
(if
- (local.tee $4
+ (local.tee $5
(i32.load offset=4
- (local.get $4)
+ (i32.add
+ (local.get $1)
+ (i32.const 16)
+ )
)
)
(if
(i32.lt_u
- (local.get $4)
+ (local.get $5)
(i32.load
(i32.const 192)
)
)
(call $_abort)
(block
- (i32.store offset=20
- (local.get $6)
- (local.get $4)
+ (i32.store
+ (i32.add
+ (local.get $6)
+ (i32.const 20)
+ )
+ (local.get $5)
)
(i32.store offset=24
- (local.get $4)
+ (local.get $5)
(local.get $6)
)
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
)
)
(block
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
)
)
)
(block
- (local.set $2
+ (local.set $3
(local.get $1)
)
- (local.set $3
+ (local.set $2
(local.get $0)
)
)
@@ -13479,7 +13423,7 @@
)
(if
(i32.ge_u
- (local.get $2)
+ (local.get $3)
(local.get $7)
)
(call $_abort)
@@ -13487,14 +13431,9 @@
(if
(i32.eqz
(i32.and
- (local.tee $1
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $7)
- (i32.const 4)
- )
- )
+ (local.tee $0
+ (i32.load offset=4
+ (local.get $7)
)
)
(i32.const 1)
@@ -13504,21 +13443,24 @@
)
(if
(i32.and
- (local.get $1)
+ (local.get $0)
(i32.const 2)
)
(block
- (i32.store
- (local.get $0)
+ (i32.store offset=4
+ (local.get $7)
(i32.and
- (local.get $1)
+ (local.get $0)
(i32.const -2)
)
)
- (i32.store offset=4
- (local.get $2)
- (i32.or
+ (i32.store
+ (i32.add
(local.get $3)
+ (i32.const 4)
+ )
+ (i32.or
+ (local.get $2)
(i32.const 1)
)
)
@@ -13527,7 +13469,7 @@
(local.get $2)
(local.get $3)
)
- (local.get $3)
+ (local.get $2)
)
)
(block
@@ -13546,16 +13488,19 @@
(i32.load
(i32.const 188)
)
- (local.get $3)
+ (local.get $2)
)
)
)
(i32.store
(i32.const 200)
- (local.get $2)
+ (local.get $3)
)
- (i32.store offset=4
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
(i32.or
(local.get $0)
(i32.const 1)
@@ -13563,7 +13508,7 @@
)
(if
(i32.ne
- (local.get $2)
+ (local.get $3)
(i32.load
(i32.const 196)
)
@@ -13596,16 +13541,19 @@
(i32.load
(i32.const 184)
)
- (local.get $3)
+ (local.get $2)
)
)
)
(i32.store
(i32.const 196)
- (local.get $2)
+ (local.get $3)
)
- (i32.store offset=4
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
(i32.or
(local.get $0)
(i32.const 1)
@@ -13614,36 +13562,36 @@
(i32.store
(i32.add
(local.get $0)
- (local.get $2)
+ (local.get $3)
)
(local.get $0)
)
(return)
)
)
- (local.set $5
+ (local.set $4
(i32.add
(i32.and
- (local.get $1)
+ (local.get $0)
(i32.const -8)
)
- (local.get $3)
+ (local.get $2)
)
)
- (local.set $3
+ (local.set $2
(i32.shr_u
- (local.get $1)
+ (local.get $0)
(i32.const 3)
)
)
(block $do-once4
(if
(i32.lt_u
- (local.get $1)
+ (local.get $0)
(i32.const 256)
)
(block
- (local.set $4
+ (local.set $5
(i32.load offset=12
(local.get $7)
)
@@ -13658,7 +13606,7 @@
(local.tee $0
(i32.add
(i32.shl
- (local.get $3)
+ (local.get $2)
(i32.const 3)
)
(i32.const 216)
@@ -13689,7 +13637,7 @@
(if
(i32.eq
(local.get $1)
- (local.get $4)
+ (local.get $5)
)
(block
(i32.store
@@ -13701,7 +13649,7 @@
(i32.xor
(i32.shl
(i32.const 1)
- (local.get $3)
+ (local.get $2)
)
(i32.const -1)
)
@@ -13713,33 +13661,34 @@
(if
(i32.eq
(local.get $0)
- (local.get $4)
+ (local.get $5)
)
(local.set $14
(i32.add
- (local.get $4)
+ (local.get $5)
(i32.const 8)
)
)
(block
(if
(i32.lt_u
- (local.get $4)
+ (local.get $5)
(i32.load
(i32.const 192)
)
)
(call $_abort)
)
+ (local.set $0
+ (i32.add
+ (local.get $5)
+ (i32.const 8)
+ )
+ )
(if
(i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $4)
- (i32.const 8)
- )
- )
+ (i32.load offset=8
+ (local.get $5)
)
(local.get $7)
)
@@ -13752,7 +13701,7 @@
)
(i32.store offset=12
(local.get $1)
- (local.get $4)
+ (local.get $5)
)
(i32.store
(local.get $14)
@@ -13775,30 +13724,31 @@
(local.get $7)
)
(block $do-once6
+ (local.set $0
+ (i32.add
+ (local.tee $1
+ (i32.add
+ (local.get $7)
+ (i32.const 16)
+ )
+ )
+ (i32.const 4)
+ )
+ )
(if
(i32.eqz
- (local.tee $3
- (i32.load
- (local.tee $0
- (i32.add
- (local.tee $1
- (i32.add
- (local.get $7)
- (i32.const 16)
- )
- )
- (i32.const 4)
- )
- )
+ (local.tee $2
+ (i32.load offset=4
+ (local.get $1)
)
)
)
(block
(br_if $do-once6
(i32.eqz
- (local.tee $3
- (i32.load
- (local.get $1)
+ (local.tee $2
+ (i32.load offset=16
+ (local.get $7)
)
)
)
@@ -13812,20 +13762,20 @@
(if
(local.tee $1
(i32.load
- (local.tee $4
+ (local.tee $5
(i32.add
- (local.get $3)
+ (local.get $2)
(i32.const 20)
)
)
)
)
(block
- (local.set $3
+ (local.set $2
(local.get $1)
)
(local.set $0
- (local.get $4)
+ (local.get $5)
)
(br $while-in9)
)
@@ -13833,20 +13783,20 @@
(if
(local.tee $1
(i32.load
- (local.tee $4
+ (local.tee $5
(i32.add
- (local.get $3)
+ (local.get $2)
(i32.const 16)
)
)
)
)
(block
- (local.set $3
+ (local.set $2
(local.get $1)
)
(local.set $0
- (local.get $4)
+ (local.get $5)
)
(br $while-in9)
)
@@ -13866,7 +13816,7 @@
(i32.const 0)
)
(local.set $9
- (local.get $3)
+ (local.get $2)
)
)
)
@@ -13874,7 +13824,7 @@
(block
(if
(i32.lt_u
- (local.tee $4
+ (local.tee $2
(i32.load offset=8
(local.get $7)
)
@@ -13888,37 +13838,27 @@
(if
(i32.ne
(local.get $7)
- (i32.load
- (local.tee $1
- (i32.add
- (local.get $4)
- (i32.const 12)
- )
- )
+ (i32.load offset=12
+ (local.get $2)
)
)
(call $_abort)
)
(if
(i32.eq
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
+ (i32.load offset=8
+ (local.get $0)
)
(local.get $7)
)
(block
- (i32.store
- (local.get $1)
+ (i32.store offset=12
+ (local.get $2)
(local.get $0)
)
- (i32.store
- (local.get $3)
- (local.get $4)
+ (i32.store offset=8
+ (local.get $0)
+ (local.get $2)
)
(local.set $9
(local.get $0)
@@ -13937,7 +13877,7 @@
(local.tee $0
(i32.add
(i32.shl
- (local.tee $3
+ (local.tee $2
(i32.load offset=28
(local.get $7)
)
@@ -13969,7 +13909,7 @@
(i32.xor
(i32.shl
(i32.const 1)
- (local.get $3)
+ (local.get $2)
)
(i32.const -1)
)
@@ -13991,18 +13931,13 @@
)
(if
(i32.eq
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $6)
- (i32.const 16)
- )
- )
+ (i32.load offset=16
+ (local.get $6)
)
(local.get $7)
)
- (i32.store
- (local.get $0)
+ (i32.store offset=16
+ (local.get $6)
(local.get $9)
)
(i32.store offset=20
@@ -14020,7 +13955,7 @@
(if
(i32.lt_u
(local.get $9)
- (local.tee $3
+ (local.tee $0
(i32.load
(i32.const 192)
)
@@ -14028,34 +13963,35 @@
)
(call $_abort)
)
- (i32.store offset=24
- (local.get $9)
+ (i32.store
+ (i32.add
+ (local.get $9)
+ (i32.const 24)
+ )
(local.get $6)
)
(if
- (local.tee $1
- (i32.load
- (local.tee $0
- (i32.add
- (local.get $7)
- (i32.const 16)
- )
- )
+ (local.tee $2
+ (i32.load offset=16
+ (local.get $7)
)
)
(if
(i32.lt_u
- (local.get $1)
- (local.get $3)
+ (local.get $2)
+ (local.get $0)
)
(call $_abort)
(block
- (i32.store offset=16
- (local.get $9)
- (local.get $1)
+ (i32.store
+ (i32.add
+ (local.get $9)
+ (i32.const 16)
+ )
+ (local.get $2)
)
(i32.store offset=24
- (local.get $1)
+ (local.get $2)
(local.get $9)
)
)
@@ -14064,7 +14000,10 @@
(if
(local.tee $0
(i32.load offset=4
- (local.get $0)
+ (i32.add
+ (local.get $7)
+ (i32.const 16)
+ )
)
)
(if
@@ -14076,8 +14015,11 @@
)
(call $_abort)
(block
- (i32.store offset=20
- (local.get $9)
+ (i32.store
+ (i32.add
+ (local.get $9)
+ (i32.const 20)
+ )
(local.get $0)
)
(i32.store offset=24
@@ -14092,49 +14034,52 @@
)
)
)
- (i32.store offset=4
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
(i32.or
- (local.get $5)
+ (local.get $4)
(i32.const 1)
)
)
(i32.store
(i32.add
- (local.get $2)
- (local.get $5)
+ (local.get $3)
+ (local.get $4)
)
- (local.get $5)
+ (local.get $4)
)
- (local.set $3
+ (local.set $2
(if (result i32)
(i32.eq
(i32.load
(i32.const 196)
)
- (local.get $2)
+ (local.get $3)
)
(block
(i32.store
(i32.const 184)
- (local.get $5)
+ (local.get $4)
)
(return)
)
- (local.get $5)
+ (local.get $4)
)
)
)
)
(local.set $0
(i32.shr_u
- (local.get $3)
+ (local.get $2)
(i32.const 3)
)
)
(if
(i32.lt_u
- (local.get $3)
+ (local.get $2)
(i32.const 256)
)
(block
@@ -14149,7 +14094,7 @@
)
(if
(i32.and
- (local.tee $3
+ (local.tee $2
(i32.load
(i32.const 176)
)
@@ -14161,29 +14106,32 @@
)
)
)
- (if
- (i32.lt_u
- (local.tee $0
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $1)
- (i32.const 8)
- )
- )
- )
- )
- (i32.load
- (i32.const 192)
+ (block
+ (local.set $2
+ (i32.add
+ (local.get $1)
+ (i32.const 8)
)
)
- (call $_abort)
- (block
- (local.set $15
- (local.get $3)
+ (if
+ (i32.lt_u
+ (local.tee $0
+ (i32.load offset=8
+ (local.get $1)
+ )
+ )
+ (i32.load
+ (i32.const 192)
+ )
)
- (local.set $13
- (local.get $0)
+ (call $_abort)
+ (block
+ (local.set $15
+ (local.get $2)
+ )
+ (local.set $13
+ (local.get $0)
+ )
)
)
)
@@ -14192,7 +14140,7 @@
(i32.const 176)
(i32.or
(local.get $0)
- (local.get $3)
+ (local.get $2)
)
)
(local.set $15
@@ -14208,42 +14156,51 @@
)
(i32.store
(local.get $15)
- (local.get $2)
+ (local.get $3)
)
- (i32.store offset=12
- (local.get $13)
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $13)
+ (i32.const 12)
+ )
+ (local.get $3)
)
- (i32.store offset=8
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
(local.get $13)
)
- (i32.store offset=12
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 12)
+ )
(local.get $1)
)
(return)
)
)
- (local.set $4
+ (local.set $5
(i32.add
(i32.shl
- (local.tee $5
+ (local.tee $4
(if (result i32)
(local.tee $0
(i32.shr_u
- (local.get $3)
+ (local.get $2)
(i32.const 8)
)
)
(if (result i32)
(i32.gt_u
- (local.get $3)
+ (local.get $2)
(i32.const 16777215)
)
(i32.const 31)
(block (result i32)
- (local.set $5
+ (local.set $4
(i32.and
(i32.shr_u
(i32.add
@@ -14271,14 +14228,14 @@
(i32.const 4)
)
)
- (local.set $4
+ (local.set $5
(i32.and
(i32.shr_u
(i32.add
(local.tee $0
(i32.shl
(local.get $0)
- (local.get $5)
+ (local.get $4)
)
)
(i32.const 245760)
@@ -14291,7 +14248,7 @@
(i32.or
(i32.and
(i32.shr_u
- (local.get $3)
+ (local.get $2)
(i32.add
(local.tee $0
(i32.add
@@ -14300,15 +14257,15 @@
(i32.or
(i32.or
(local.get $1)
- (local.get $5)
+ (local.get $4)
)
- (local.get $4)
+ (local.get $5)
)
)
(i32.shr_u
(i32.shl
(local.get $0)
- (local.get $4)
+ (local.get $5)
)
(i32.const 15)
)
@@ -14334,16 +14291,25 @@
(i32.const 480)
)
)
- (i32.store offset=28
- (local.get $2)
- (local.get $5)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 28)
+ )
+ (local.get $4)
)
- (i32.store offset=20
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 20)
+ )
(i32.const 0)
)
- (i32.store offset=16
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 16)
+ )
(i32.const 0)
)
(if
@@ -14356,25 +14322,25 @@
(local.tee $0
(i32.shl
(i32.const 1)
- (local.get $5)
+ (local.get $4)
)
)
)
(block $do-once12
- (local.set $5
+ (local.set $4
(i32.shl
- (local.get $3)
+ (local.get $2)
(select
(i32.const 0)
(i32.sub
(i32.const 25)
(i32.shr_u
- (local.get $5)
+ (local.get $4)
(i32.const 1)
)
)
(i32.eq
- (local.get $5)
+ (local.get $4)
(i32.const 31)
)
)
@@ -14382,7 +14348,7 @@
)
(local.set $0
(i32.load
- (local.get $4)
+ (local.get $5)
)
)
(block $__rjto$1
@@ -14391,24 +14357,27 @@
(br_if $__rjti$1
(i32.eq
(i32.and
- (i32.load offset=4
- (local.get $0)
+ (i32.load
+ (i32.add
+ (local.get $0)
+ (i32.const 4)
+ )
)
(i32.const -8)
)
- (local.get $3)
+ (local.get $2)
)
)
- (local.set $4
+ (local.set $5
(i32.shl
- (local.get $5)
+ (local.get $4)
(i32.const 1)
)
)
(if
(local.tee $1
(i32.load
- (local.tee $5
+ (local.tee $4
(i32.add
(i32.add
(local.get $0)
@@ -14416,7 +14385,7 @@
)
(i32.shl
(i32.shr_u
- (local.get $5)
+ (local.get $4)
(i32.const 31)
)
(i32.const 2)
@@ -14426,8 +14395,8 @@
)
)
(block
- (local.set $5
- (local.get $4)
+ (local.set $4
+ (local.get $5)
)
(local.set $0
(local.get $1)
@@ -14438,7 +14407,7 @@
)
(if
(i32.lt_u
- (local.get $5)
+ (local.get $4)
(i32.load
(i32.const 192)
)
@@ -14446,20 +14415,29 @@
(call $_abort)
(block
(i32.store
- (local.get $5)
- (local.get $2)
+ (local.get $4)
+ (local.get $3)
)
- (i32.store offset=24
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 24)
+ )
(local.get $0)
)
- (i32.store offset=12
- (local.get $2)
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 12)
+ )
+ (local.get $3)
)
- (i32.store offset=8
- (local.get $2)
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (local.get $3)
)
(br $do-once12)
)
@@ -14469,17 +14447,12 @@
(if
(i32.and
(i32.ge_u
- (local.tee $4
- (i32.load
- (local.tee $1
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
+ (local.tee $1
+ (i32.load offset=8
+ (local.get $0)
)
)
- (local.tee $3
+ (local.tee $2
(i32.load
(i32.const 192)
)
@@ -14487,28 +14460,37 @@
)
(i32.ge_u
(local.get $0)
- (local.get $3)
+ (local.get $2)
)
)
(block
(i32.store offset=12
- (local.get $4)
- (local.get $2)
- )
- (i32.store
(local.get $1)
- (local.get $2)
+ (local.get $3)
)
(i32.store offset=8
- (local.get $2)
- (local.get $4)
+ (local.get $0)
+ (local.get $3)
)
- (i32.store offset=12
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (local.get $1)
+ )
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 12)
+ )
(local.get $0)
)
- (i32.store offset=24
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 24)
+ )
(i32.const 0)
)
)
@@ -14525,20 +14507,29 @@
)
)
(i32.store
- (local.get $4)
- (local.get $2)
+ (local.get $5)
+ (local.get $3)
)
- (i32.store offset=24
- (local.get $2)
- (local.get $4)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 24)
+ )
+ (local.get $5)
)
- (i32.store offset=12
- (local.get $2)
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 12)
+ )
+ (local.get $3)
)
- (i32.store offset=8
- (local.get $2)
- (local.get $2)
+ (i32.store
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (local.get $3)
)
)
)
@@ -14563,7 +14554,7 @@
(loop $while-in17
(local.set $0
(i32.add
- (local.tee $3
+ (local.tee $2
(i32.load
(local.get $0)
)
@@ -14572,7 +14563,7 @@
)
)
(br_if $while-in17
- (local.get $3)
+ (local.get $2)
)
)
(i32.store
diff --git a/test/memorygrowth.fromasm b/test/memorygrowth.fromasm
index 6a67b7fc0..cf59a4baf 100644
--- a/test/memorygrowth.fromasm
+++ b/test/memorygrowth.fromasm
@@ -7687,9 +7687,7 @@
(local $13 i32)
(local $14 i32)
(local $15 i32)
- (local $16 i32)
- (local $17 i32)
- (local.set $12
+ (local.set $7
(global.get $r)
)
(global.set $r
@@ -7698,29 +7696,25 @@
(i32.const 48)
)
)
- (local.set $9
+ (local.set $11
(i32.add
- (local.get $12)
+ (local.get $7)
(i32.const 16)
)
)
+ (local.set $9
+ (local.get $7)
+ )
(i32.store
(local.tee $3
(i32.add
- (local.tee $10
- (local.get $12)
- )
+ (local.get $7)
(i32.const 32)
)
)
- (local.tee $11
- (i32.load
- (local.tee $7
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
+ (local.tee $10
+ (i32.load offset=28
+ (local.get $0)
)
)
)
@@ -7728,15 +7722,10 @@
(local.get $3)
(local.tee $8
(i32.sub
- (i32.load
- (local.tee $13
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
- (local.get $11)
+ (local.get $10)
)
)
)
@@ -7754,7 +7743,7 @@
(i32.const 60)
)
)
- (local.set $11
+ (local.set $10
(i32.add
(local.get $0)
(i32.const 44)
@@ -7788,24 +7777,24 @@
(local.get $0)
)
(i32.store
- (local.get $10)
+ (local.get $9)
(i32.load
(local.get $1)
)
)
(i32.store offset=4
- (local.get $10)
+ (local.get $9)
(local.get $5)
)
(i32.store offset=8
- (local.get $10)
+ (local.get $9)
(local.get $3)
)
(local.set $8
(call $Pa
(call $ya
(i32.const 146)
- (local.get $10)
+ (local.get $9)
)
)
)
@@ -7815,24 +7804,24 @@
(local.get $8)
)
(block (result i32)
- (i32.store
- (local.get $9)
+ (i32.store offset=16
+ (local.get $7)
(i32.load
(local.get $1)
)
)
(i32.store offset=4
- (local.get $9)
+ (local.get $11)
(local.get $5)
)
(i32.store offset=8
- (local.get $9)
+ (local.get $11)
(local.get $3)
)
(call $Pa
(call $ya
(i32.const 146)
- (local.get $9)
+ (local.get $11)
)
)
)
@@ -7852,10 +7841,10 @@
(i32.const 0)
)
(block
- (local.set $16
+ (local.set $14
(local.get $5)
)
- (local.set $17
+ (local.set $15
(local.get $3)
)
(local.set $1
@@ -7873,23 +7862,23 @@
(if
(i32.gt_u
(local.get $6)
- (local.tee $14
+ (local.tee $12
(i32.load offset=4
(local.get $5)
)
)
)
(block
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(local.tee $4
(i32.load
- (local.get $11)
+ (local.get $10)
)
)
)
- (i32.store
- (local.get $13)
+ (i32.store offset=20
+ (local.get $0)
(local.get $4)
)
(local.set $4
@@ -7900,7 +7889,7 @@
(local.set $6
(i32.sub
(local.get $6)
- (local.get $14)
+ (local.get $12)
)
)
(local.set $5
@@ -7923,12 +7912,12 @@
(i32.const 2)
)
(block
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(i32.add
(local.get $6)
- (i32.load
- (local.get $7)
+ (i32.load offset=28
+ (local.get $0)
)
)
)
@@ -7938,7 +7927,7 @@
)
)
(local.set $4
- (local.get $14)
+ (local.get $12)
)
)
)
@@ -7964,7 +7953,7 @@
(br $while-in)
)
)
- (local.set $15
+ (local.set $13
(if (result i32)
(i32.eq
(local.get $1)
@@ -7976,7 +7965,7 @@
(i32.add
(local.tee $4
(i32.load
- (local.get $11)
+ (local.get $10)
)
)
(i32.load offset=48
@@ -7984,12 +7973,12 @@
)
)
)
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(local.get $4)
)
- (i32.store
- (local.get $13)
+ (i32.store offset=20
+ (local.get $0)
(local.get $4)
)
(local.get $2)
@@ -8004,12 +7993,12 @@
(local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $13)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
(i32.store
@@ -8023,26 +8012,26 @@
)
(if (result i32)
(i32.eq
- (local.get $17)
+ (local.get $15)
(i32.const 2)
)
(i32.const 0)
(i32.sub
(local.get $2)
(i32.load offset=4
- (local.get $16)
+ (local.get $14)
)
)
)
)
- (local.get $15)
+ (local.get $13)
)
)
)
(global.set $r
- (local.get $12)
+ (local.get $7)
)
- (local.get $15)
+ (local.get $13)
)
(func $Wa (; 16 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
@@ -8579,26 +8568,13 @@
(local $1 i32)
(local $2 i32)
(local $3 i32)
- (local $4 i32)
- (local $5 i32)
- (local $6 i32)
(if
(i32.gt_u
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
- (i32.load
- (local.tee $4
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
+ (i32.load offset=28
+ (local.get $0)
)
)
(block
@@ -8619,8 +8595,8 @@
)
)
(if
- (i32.load
- (local.get $3)
+ (i32.load offset=20
+ (local.get $0)
)
(local.set $1
(i32.const 3)
@@ -8652,14 +8628,9 @@
)
)
)
- (local.tee $6
- (i32.load
- (local.tee $5
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
+ (local.tee $3
+ (i32.load offset=8
+ (local.get $0)
)
)
)
@@ -8668,7 +8639,7 @@
(local.get $0)
(i32.sub
(local.get $2)
- (local.get $6)
+ (local.get $3)
)
(i32.const 1)
(i32.add
@@ -8687,16 +8658,16 @@
(local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $4)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $3)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $5)
+ (i32.store offset=8
+ (local.get $0)
(i32.const 0)
)
(i32.store
@@ -8999,7 +8970,6 @@
(func $db (; 24 ;) (; has Stack IR ;)
(local $0 i32)
(local $1 i32)
- (local $2 i32)
(drop
(i32.load offset=76
(local.tee $0
@@ -9033,13 +9003,8 @@
(if
(i32.lt_u
(local.tee $1
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
)
(i32.load offset=16
@@ -9047,8 +9012,8 @@
)
)
(block
- (i32.store
- (local.get $2)
+ (i32.store offset=20
+ (local.get $0)
(i32.add
(local.get $1)
(i32.const 1)
@@ -9182,8 +9147,7 @@
)
(func $Ua (; 27 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
- (local $4 i32)
- (local.set $4
+ (local.set $3
(global.get $r)
)
(global.set $r
@@ -9193,9 +9157,7 @@
)
)
(i32.store
- (local.tee $3
- (local.get $4)
- )
+ (local.get $3)
(i32.load offset=60
(local.get $0)
)
@@ -9210,11 +9172,9 @@
)
(i32.store offset=12
(local.get $3)
- (local.tee $0
- (i32.add
- (local.get $3)
- (i32.const 20)
- )
+ (i32.add
+ (local.get $3)
+ (i32.const 20)
)
)
(i32.store offset=16
@@ -9233,19 +9193,19 @@
(i32.const 0)
)
(block (result i32)
- (i32.store
- (local.get $0)
+ (i32.store offset=20
+ (local.get $3)
(i32.const -1)
)
(i32.const -1)
)
- (i32.load
- (local.get $0)
+ (i32.load offset=20
+ (local.get $3)
)
)
)
(global.set $r
- (local.get $4)
+ (local.get $3)
)
(local.get $0)
)
diff --git a/test/memorygrowth.fromasm.clamp b/test/memorygrowth.fromasm.clamp
index 6a67b7fc0..cf59a4baf 100644
--- a/test/memorygrowth.fromasm.clamp
+++ b/test/memorygrowth.fromasm.clamp
@@ -7687,9 +7687,7 @@
(local $13 i32)
(local $14 i32)
(local $15 i32)
- (local $16 i32)
- (local $17 i32)
- (local.set $12
+ (local.set $7
(global.get $r)
)
(global.set $r
@@ -7698,29 +7696,25 @@
(i32.const 48)
)
)
- (local.set $9
+ (local.set $11
(i32.add
- (local.get $12)
+ (local.get $7)
(i32.const 16)
)
)
+ (local.set $9
+ (local.get $7)
+ )
(i32.store
(local.tee $3
(i32.add
- (local.tee $10
- (local.get $12)
- )
+ (local.get $7)
(i32.const 32)
)
)
- (local.tee $11
- (i32.load
- (local.tee $7
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
+ (local.tee $10
+ (i32.load offset=28
+ (local.get $0)
)
)
)
@@ -7728,15 +7722,10 @@
(local.get $3)
(local.tee $8
(i32.sub
- (i32.load
- (local.tee $13
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
- (local.get $11)
+ (local.get $10)
)
)
)
@@ -7754,7 +7743,7 @@
(i32.const 60)
)
)
- (local.set $11
+ (local.set $10
(i32.add
(local.get $0)
(i32.const 44)
@@ -7788,24 +7777,24 @@
(local.get $0)
)
(i32.store
- (local.get $10)
+ (local.get $9)
(i32.load
(local.get $1)
)
)
(i32.store offset=4
- (local.get $10)
+ (local.get $9)
(local.get $5)
)
(i32.store offset=8
- (local.get $10)
+ (local.get $9)
(local.get $3)
)
(local.set $8
(call $Pa
(call $ya
(i32.const 146)
- (local.get $10)
+ (local.get $9)
)
)
)
@@ -7815,24 +7804,24 @@
(local.get $8)
)
(block (result i32)
- (i32.store
- (local.get $9)
+ (i32.store offset=16
+ (local.get $7)
(i32.load
(local.get $1)
)
)
(i32.store offset=4
- (local.get $9)
+ (local.get $11)
(local.get $5)
)
(i32.store offset=8
- (local.get $9)
+ (local.get $11)
(local.get $3)
)
(call $Pa
(call $ya
(i32.const 146)
- (local.get $9)
+ (local.get $11)
)
)
)
@@ -7852,10 +7841,10 @@
(i32.const 0)
)
(block
- (local.set $16
+ (local.set $14
(local.get $5)
)
- (local.set $17
+ (local.set $15
(local.get $3)
)
(local.set $1
@@ -7873,23 +7862,23 @@
(if
(i32.gt_u
(local.get $6)
- (local.tee $14
+ (local.tee $12
(i32.load offset=4
(local.get $5)
)
)
)
(block
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(local.tee $4
(i32.load
- (local.get $11)
+ (local.get $10)
)
)
)
- (i32.store
- (local.get $13)
+ (i32.store offset=20
+ (local.get $0)
(local.get $4)
)
(local.set $4
@@ -7900,7 +7889,7 @@
(local.set $6
(i32.sub
(local.get $6)
- (local.get $14)
+ (local.get $12)
)
)
(local.set $5
@@ -7923,12 +7912,12 @@
(i32.const 2)
)
(block
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(i32.add
(local.get $6)
- (i32.load
- (local.get $7)
+ (i32.load offset=28
+ (local.get $0)
)
)
)
@@ -7938,7 +7927,7 @@
)
)
(local.set $4
- (local.get $14)
+ (local.get $12)
)
)
)
@@ -7964,7 +7953,7 @@
(br $while-in)
)
)
- (local.set $15
+ (local.set $13
(if (result i32)
(i32.eq
(local.get $1)
@@ -7976,7 +7965,7 @@
(i32.add
(local.tee $4
(i32.load
- (local.get $11)
+ (local.get $10)
)
)
(i32.load offset=48
@@ -7984,12 +7973,12 @@
)
)
)
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(local.get $4)
)
- (i32.store
- (local.get $13)
+ (i32.store offset=20
+ (local.get $0)
(local.get $4)
)
(local.get $2)
@@ -8004,12 +7993,12 @@
(local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $13)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
(i32.store
@@ -8023,26 +8012,26 @@
)
(if (result i32)
(i32.eq
- (local.get $17)
+ (local.get $15)
(i32.const 2)
)
(i32.const 0)
(i32.sub
(local.get $2)
(i32.load offset=4
- (local.get $16)
+ (local.get $14)
)
)
)
)
- (local.get $15)
+ (local.get $13)
)
)
)
(global.set $r
- (local.get $12)
+ (local.get $7)
)
- (local.get $15)
+ (local.get $13)
)
(func $Wa (; 16 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (result i32)
(local $2 i32)
@@ -8579,26 +8568,13 @@
(local $1 i32)
(local $2 i32)
(local $3 i32)
- (local $4 i32)
- (local $5 i32)
- (local $6 i32)
(if
(i32.gt_u
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
- (i32.load
- (local.tee $4
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
+ (i32.load offset=28
+ (local.get $0)
)
)
(block
@@ -8619,8 +8595,8 @@
)
)
(if
- (i32.load
- (local.get $3)
+ (i32.load offset=20
+ (local.get $0)
)
(local.set $1
(i32.const 3)
@@ -8652,14 +8628,9 @@
)
)
)
- (local.tee $6
- (i32.load
- (local.tee $5
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
+ (local.tee $3
+ (i32.load offset=8
+ (local.get $0)
)
)
)
@@ -8668,7 +8639,7 @@
(local.get $0)
(i32.sub
(local.get $2)
- (local.get $6)
+ (local.get $3)
)
(i32.const 1)
(i32.add
@@ -8687,16 +8658,16 @@
(local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $4)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $3)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $5)
+ (i32.store offset=8
+ (local.get $0)
(i32.const 0)
)
(i32.store
@@ -8999,7 +8970,6 @@
(func $db (; 24 ;) (; has Stack IR ;)
(local $0 i32)
(local $1 i32)
- (local $2 i32)
(drop
(i32.load offset=76
(local.tee $0
@@ -9033,13 +9003,8 @@
(if
(i32.lt_u
(local.tee $1
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
)
(i32.load offset=16
@@ -9047,8 +9012,8 @@
)
)
(block
- (i32.store
- (local.get $2)
+ (i32.store offset=20
+ (local.get $0)
(i32.add
(local.get $1)
(i32.const 1)
@@ -9182,8 +9147,7 @@
)
(func $Ua (; 27 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
- (local $4 i32)
- (local.set $4
+ (local.set $3
(global.get $r)
)
(global.set $r
@@ -9193,9 +9157,7 @@
)
)
(i32.store
- (local.tee $3
- (local.get $4)
- )
+ (local.get $3)
(i32.load offset=60
(local.get $0)
)
@@ -9210,11 +9172,9 @@
)
(i32.store offset=12
(local.get $3)
- (local.tee $0
- (i32.add
- (local.get $3)
- (i32.const 20)
- )
+ (i32.add
+ (local.get $3)
+ (i32.const 20)
)
)
(i32.store offset=16
@@ -9233,19 +9193,19 @@
(i32.const 0)
)
(block (result i32)
- (i32.store
- (local.get $0)
+ (i32.store offset=20
+ (local.get $3)
(i32.const -1)
)
(i32.const -1)
)
- (i32.load
- (local.get $0)
+ (i32.load offset=20
+ (local.get $3)
)
)
)
(global.set $r
- (local.get $4)
+ (local.get $3)
)
(local.get $0)
)
diff --git a/test/memorygrowth.fromasm.imprecise b/test/memorygrowth.fromasm.imprecise
index 075614f71..2ffcd0c51 100644
--- a/test/memorygrowth.fromasm.imprecise
+++ b/test/memorygrowth.fromasm.imprecise
@@ -7685,9 +7685,7 @@
(local $13 i32)
(local $14 i32)
(local $15 i32)
- (local $16 i32)
- (local $17 i32)
- (local.set $12
+ (local.set $7
(global.get $r)
)
(global.set $r
@@ -7696,29 +7694,25 @@
(i32.const 48)
)
)
- (local.set $9
+ (local.set $11
(i32.add
- (local.get $12)
+ (local.get $7)
(i32.const 16)
)
)
+ (local.set $9
+ (local.get $7)
+ )
(i32.store
(local.tee $3
(i32.add
- (local.tee $10
- (local.get $12)
- )
+ (local.get $7)
(i32.const 32)
)
)
- (local.tee $11
- (i32.load
- (local.tee $7
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
+ (local.tee $10
+ (i32.load offset=28
+ (local.get $0)
)
)
)
@@ -7726,15 +7720,10 @@
(local.get $3)
(local.tee $8
(i32.sub
- (i32.load
- (local.tee $13
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
- (local.get $11)
+ (local.get $10)
)
)
)
@@ -7752,7 +7741,7 @@
(i32.const 60)
)
)
- (local.set $11
+ (local.set $10
(i32.add
(local.get $0)
(i32.const 44)
@@ -7786,24 +7775,24 @@
(local.get $0)
)
(i32.store
- (local.get $10)
+ (local.get $9)
(i32.load
(local.get $1)
)
)
(i32.store offset=4
- (local.get $10)
+ (local.get $9)
(local.get $5)
)
(i32.store offset=8
- (local.get $10)
+ (local.get $9)
(local.get $3)
)
(local.set $8
(call $Pa
(call $ya
(i32.const 146)
- (local.get $10)
+ (local.get $9)
)
)
)
@@ -7813,24 +7802,24 @@
(local.get $8)
)
(block (result i32)
- (i32.store
- (local.get $9)
+ (i32.store offset=16
+ (local.get $7)
(i32.load
(local.get $1)
)
)
(i32.store offset=4
- (local.get $9)
+ (local.get $11)
(local.get $5)
)
(i32.store offset=8
- (local.get $9)
+ (local.get $11)
(local.get $3)
)
(call $Pa
(call $ya
(i32.const 146)
- (local.get $9)
+ (local.get $11)
)
)
)
@@ -7850,10 +7839,10 @@
(i32.const 0)
)
(block
- (local.set $15
+ (local.set $13
(local.get $5)
)
- (local.set $16
+ (local.set $14
(local.get $3)
)
(local.set $1
@@ -7871,23 +7860,23 @@
(if
(i32.gt_u
(local.get $6)
- (local.tee $14
+ (local.tee $12
(i32.load offset=4
(local.get $5)
)
)
)
(block
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(local.tee $4
(i32.load
- (local.get $11)
+ (local.get $10)
)
)
)
- (i32.store
- (local.get $13)
+ (i32.store offset=20
+ (local.get $0)
(local.get $4)
)
(local.set $4
@@ -7898,7 +7887,7 @@
(local.set $6
(i32.sub
(local.get $6)
- (local.get $14)
+ (local.get $12)
)
)
(local.set $5
@@ -7921,12 +7910,12 @@
(i32.const 2)
)
(block
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(i32.add
(local.get $6)
- (i32.load
- (local.get $7)
+ (i32.load offset=28
+ (local.get $0)
)
)
)
@@ -7936,7 +7925,7 @@
)
)
(local.set $4
- (local.get $14)
+ (local.get $12)
)
)
)
@@ -7963,7 +7952,7 @@
)
)
(global.set $r
- (local.get $12)
+ (local.get $7)
)
(if (result i32)
(i32.eq
@@ -7976,7 +7965,7 @@
(i32.add
(local.tee $4
(i32.load
- (local.get $11)
+ (local.get $10)
)
)
(i32.load offset=48
@@ -7984,12 +7973,12 @@
)
)
)
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(local.get $4)
)
- (i32.store
- (local.get $13)
+ (i32.store offset=20
+ (local.get $0)
(local.get $4)
)
(local.get $2)
@@ -8004,12 +7993,12 @@
(local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $7)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $13)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
(i32.store
@@ -8026,16 +8015,16 @@
(i32.sub
(local.get $2)
(i32.load offset=4
- (local.get $15)
+ (local.get $13)
)
)
(i32.eq
- (local.get $16)
+ (local.get $14)
(i32.const 2)
)
)
)
- (local.get $17)
+ (local.get $15)
)
)
)
@@ -8569,26 +8558,13 @@
(local $1 i32)
(local $2 i32)
(local $3 i32)
- (local $4 i32)
- (local $5 i32)
- (local $6 i32)
(if
(i32.gt_u
- (i32.load
- (local.tee $3
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
- (i32.load
- (local.tee $4
- (i32.add
- (local.get $0)
- (i32.const 28)
- )
- )
+ (i32.load offset=28
+ (local.get $0)
)
)
(block
@@ -8609,8 +8585,8 @@
)
)
(if
- (i32.load
- (local.get $3)
+ (i32.load offset=20
+ (local.get $0)
)
(local.set $1
(i32.const 3)
@@ -8642,14 +8618,9 @@
)
)
)
- (local.tee $6
- (i32.load
- (local.tee $5
- (i32.add
- (local.get $0)
- (i32.const 8)
- )
- )
+ (local.tee $3
+ (i32.load offset=8
+ (local.get $0)
)
)
)
@@ -8658,7 +8629,7 @@
(local.get $0)
(i32.sub
(local.get $2)
- (local.get $6)
+ (local.get $3)
)
(i32.const 1)
(i32.add
@@ -8677,16 +8648,16 @@
(local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $4)
+ (i32.store offset=28
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $3)
+ (i32.store offset=20
+ (local.get $0)
(i32.const 0)
)
- (i32.store
- (local.get $5)
+ (i32.store offset=8
+ (local.get $0)
(i32.const 0)
)
(i32.store
@@ -9006,22 +8977,22 @@
(i32.add
(select
(i32.div_u
- (local.tee $2
+ (local.tee $1
(call $Wa
- (local.tee $1
- (local.tee $3
+ (local.tee $3
+ (local.tee $2
(call $Za)
)
)
(local.get $0)
)
)
- (local.get $3)
+ (local.get $2)
)
(i32.const 1)
(i32.ne
(local.get $1)
- (local.get $2)
+ (local.get $3)
)
)
(i32.const -1)
@@ -9040,13 +9011,8 @@
(if
(i32.lt_u
(local.tee $1
- (i32.load
- (local.tee $2
- (i32.add
- (local.get $0)
- (i32.const 20)
- )
- )
+ (i32.load offset=20
+ (local.get $0)
)
)
(i32.load offset=16
@@ -9054,8 +9020,8 @@
)
)
(block
- (i32.store
- (local.get $2)
+ (i32.store offset=20
+ (local.get $0)
(i32.add
(local.get $1)
(i32.const 1)
@@ -9156,8 +9122,7 @@
)
(func $Ua (; 26 ;) (; has Stack IR ;) (param $0 i32) (param $1 i32) (param $2 i32) (result i32)
(local $3 i32)
- (local $4 i32)
- (local.set $4
+ (local.set $3
(global.get $r)
)
(global.set $r
@@ -9167,9 +9132,7 @@
)
)
(i32.store
- (local.tee $3
- (local.get $4)
- )
+ (local.get $3)
(i32.load offset=60
(local.get $0)
)
@@ -9184,11 +9147,9 @@
)
(i32.store offset=12
(local.get $3)
- (local.tee $0
- (i32.add
- (local.get $3)
- (i32.const 20)
- )
+ (i32.add
+ (local.get $3)
+ (i32.const 20)
)
)
(i32.store offset=16
@@ -9207,19 +9168,19 @@
(i32.const 0)
)
(block (result i32)
- (i32.store
- (local.get $0)
+ (i32.store offset=20
+ (local.get $3)
(i32.const -1)
)
(i32.const -1)
)
- (i32.load
- (local.get $0)
+ (i32.load offset=20
+ (local.get $3)
)
)
)
(global.set $r
- (local.get $4)
+ (local.get $3)
)
(local.get $0)
)
diff --git a/test/passes/optimize-added-constants-propagate_low-memory-unused.txt b/test/passes/optimize-added-constants-propagate_low-memory-unused.txt
new file mode 100644
index 000000000..6d823ed2b
--- /dev/null
+++ b/test/passes/optimize-added-constants-propagate_low-memory-unused.txt
@@ -0,0 +1,410 @@
+(module
+ (type $0 (func))
+ (type $1 (func (param i32)))
+ (type $2 (func (param i32) (result i32)))
+ (func $consts (; 0 ;) (type $0)
+ (drop
+ (i32.load
+ (i32.const 0)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1023)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1024)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 0)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1023)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1024)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1023)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1024)
+ )
+ )
+ (i32.store
+ (i32.const 1)
+ (i32.const 1)
+ )
+ )
+ (func $offsets (; 1 ;) (type $1) (param $x i32)
+ (drop
+ (i32.load offset=1
+ (local.get $x)
+ )
+ )
+ (drop
+ (i32.load offset=8
+ (local.get $x)
+ )
+ )
+ (drop
+ (i32.load offset=1023
+ (local.get $x)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.add
+ (local.get $x)
+ (i32.const 1024)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (i32.add
+ (local.get $x)
+ (i32.const 2048)
+ )
+ )
+ )
+ (drop
+ (i32.load offset=4
+ (local.get $x)
+ )
+ )
+ )
+ (func $load-off-2 (; 2 ;) (type $2) (param $0 i32) (result i32)
+ (i32.store
+ (i32.const 6)
+ (local.get $0)
+ )
+ (i32.store
+ (i32.const 6)
+ (local.get $0)
+ )
+ (i32.store offset=7
+ (local.get $0)
+ (local.get $0)
+ )
+ (i32.store offset=9
+ (local.get $0)
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.add
+ (i32.const -11)
+ (local.get $0)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.add
+ (local.get $0)
+ (i32.const -13)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=19
+ (i32.const -15)
+ (local.get $0)
+ )
+ (i32.store offset=21
+ (i32.const -21)
+ (local.get $0)
+ )
+ (i32.store
+ (i32.const 25)
+ (local.get $0)
+ )
+ (i32.store
+ (i32.const -23)
+ (local.get $0)
+ )
+ (drop
+ (i32.load
+ (i32.const 8)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 8)
+ )
+ )
+ (drop
+ (i32.load offset=8
+ (local.get $0)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 10)
+ )
+ )
+ (i32.load offset=12
+ (local.get $0)
+ )
+ )
+ (func $offset-constant (; 3 ;) (type $0)
+ (drop
+ (i32.load
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 20)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1024)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1023)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1023)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 100511)
+ )
+ )
+ )
+ (func $offset-propagate-param (; 4 ;) (type $1) (param $x i32)
+ (local $y i32)
+ (local.set $x
+ (i32.add
+ (local.get $y)
+ (i32.const 1)
+ )
+ )
+ (drop
+ (i32.load offset=1
+ (local.get $y)
+ )
+ )
+ )
+ (func $offset-propagate (; 5 ;) (type $0)
+ (local $x i32)
+ (local $y i32)
+ (local.set $x
+ (i32.add
+ (local.get $y)
+ (i32.const 1)
+ )
+ )
+ (drop
+ (i32.load offset=1
+ (local.get $y)
+ )
+ )
+ )
+ (func $offset-propagate2 (; 6 ;) (type $0)
+ (local $x i32)
+ (local $y i32)
+ (local.set $x
+ (i32.add
+ (local.get $y)
+ (i32.add
+ (i32.const 1)
+ (i32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate3 (; 7 ;) (type $0)
+ (local $x i32)
+ (local $y i32)
+ (local.set $x
+ (i32.add
+ (i32.const 1)
+ (local.get $y)
+ )
+ )
+ (drop
+ (i32.load offset=1
+ (local.get $y)
+ )
+ )
+ )
+ (func $offset-propagate4 (; 8 ;) (type $0)
+ (local $x i32)
+ (local $y i32)
+ (local.set $y
+ (i32.const -1)
+ )
+ (local.set $x
+ (i32.add
+ (i32.const 1)
+ (local.get $y)
+ )
+ )
+ (drop
+ (i32.load offset=1
+ (local.get $y)
+ )
+ )
+ )
+ (func $offset-propagate5 (; 9 ;) (type $1) (param $z i32)
+ (local $x i32)
+ (local $y i32)
+ (if
+ (local.get $z)
+ (local.set $y
+ (i32.const -1)
+ )
+ )
+ (local.set $x
+ (i32.add
+ (i32.const 1)
+ (local.get $y)
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate6 (; 10 ;) (type $1) (param $z i32)
+ (local $x i32)
+ (local $y i32)
+ (local.set $y
+ (local.get $z)
+ )
+ (local.set $x
+ (i32.add
+ (i32.const 1)
+ (local.get $y)
+ )
+ )
+ (local.set $y
+ (i32.const -2)
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate7 (; 11 ;) (type $1) (param $z i32)
+ (local $x i32)
+ (local $y i32)
+ (local.set $y
+ (local.get $z)
+ )
+ (local.set $x
+ (i32.add
+ (i32.const 1)
+ (local.get $y)
+ )
+ )
+ (if
+ (i32.const 1)
+ (local.set $x
+ (i32.add
+ (i32.const 2)
+ (local.get $y)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-realistic (; 12 ;) (type $1) (param $ptr i32)
+ (local $x i32)
+ (local $y i32)
+ (local $z i32)
+ (local.set $x
+ (i32.add
+ (local.get $ptr)
+ (i32.const 8)
+ )
+ )
+ (local.set $y
+ (i32.add
+ (local.get $ptr)
+ (i32.const 16)
+ )
+ )
+ (local.set $z
+ (i32.add
+ (local.get $ptr)
+ (i32.const 24)
+ )
+ )
+ (loop $l
+ (call $offset-realistic
+ (i32.load offset=8
+ (local.get $ptr)
+ )
+ )
+ (call $offset-realistic
+ (i32.load offset=16
+ (local.get $ptr)
+ )
+ )
+ (call $offset-realistic
+ (i32.load offset=16
+ (local.get $ptr)
+ )
+ )
+ (i32.store offset=24
+ (local.get $ptr)
+ (i32.add
+ (i32.load offset=24
+ (local.get $ptr)
+ )
+ (i32.const 1)
+ )
+ )
+ (br_if $l
+ (i32.load offset=24
+ (local.get $ptr)
+ )
+ )
+ )
+ )
+)
diff --git a/test/passes/optimize-added-constants-propagate_low-memory-unused.wast b/test/passes/optimize-added-constants-propagate_low-memory-unused.wast
new file mode 100644
index 000000000..4f549aa47
--- /dev/null
+++ b/test/passes/optimize-added-constants-propagate_low-memory-unused.wast
@@ -0,0 +1,415 @@
+(module
+ (func $consts
+ (drop
+ (i32.load (i32.const 0))
+ )
+ (drop
+ (i32.load (i32.const 1))
+ )
+ (drop
+ (i32.load (i32.const 1023))
+ )
+ (drop
+ (i32.load (i32.const 1024))
+ )
+ (drop
+ (i32.load offset=0 (i32.const 0))
+ )
+ (drop
+ (i32.load offset=1 (i32.const 0))
+ )
+ (drop
+ (i32.load offset=1023 (i32.const 0))
+ )
+ (drop
+ (i32.load offset=1024 (i32.const 0))
+ )
+ (drop
+ (i32.load offset=512 (i32.const 511))
+ )
+ (drop
+ (i32.load offset=512 (i32.const 512))
+ )
+ (i32.store (i32.const 1) (i32.const 1))
+ )
+ (func $offsets (param $x i32)
+ (drop
+ (i32.load
+ (i32.add
+ (local.get $x)
+ (i32.const 1)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (i32.add
+ (local.get $x)
+ (i32.const 8)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (i32.add
+ (local.get $x)
+ (i32.const 1023)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (i32.add
+ (local.get $x)
+ (i32.const 1024)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (i32.add
+ (local.get $x)
+ (i32.const 2048)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (i32.add
+ (i32.const 4)
+ (local.get $x)
+ )
+ )
+ )
+ )
+ (func $load-off-2 (param $0 i32) (result i32)
+ (i32.store offset=2
+ (i32.add
+ (i32.const 1)
+ (i32.const 3)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.add
+ (i32.const 3)
+ (i32.const 1)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.add
+ (local.get $0)
+ (i32.const 5)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.add
+ (i32.const 7)
+ (local.get $0)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.add
+ (i32.const -11) ;; do not fold this!
+ (local.get $0)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.add
+ (local.get $0)
+ (i32.const -13) ;; do not fold this!
+ )
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.add
+ (i32.const -15)
+ (i32.const 17)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.add
+ (i32.const -21)
+ (i32.const 19)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.const 23)
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.const -25)
+ (local.get $0)
+ )
+ (drop
+ (i32.load offset=2
+ (i32.add
+ (i32.const 2)
+ (i32.const 4)
+ )
+ )
+ )
+ (drop
+ (i32.load offset=2
+ (i32.add
+ (i32.const 4)
+ (i32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.load offset=2
+ (i32.add
+ (local.get $0)
+ (i32.const 6)
+ )
+ )
+ )
+ (drop
+ (i32.load offset=2
+ (i32.const 8)
+ )
+ )
+ (i32.load offset=2
+ (i32.add
+ (i32.const 10)
+ (local.get $0)
+ )
+ )
+ )
+ (func $offset-constant
+ (drop
+ (i32.load offset=10
+ (i32.const 0)
+ )
+ )
+ (drop
+ (i32.load offset=0
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.load offset=10
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.load offset=512
+ (i32.const 512)
+ )
+ )
+ (drop
+ (i32.load offset=512
+ (i32.const 511)
+ )
+ )
+ (drop
+ (i32.load offset=511
+ (i32.const 512)
+ )
+ )
+ (drop
+ (i32.load offset=99999
+ (i32.const 512)
+ )
+ )
+ )
+ (func $offset-propagate-param (param $x i32)
+ (local $y i32)
+ (local.set $x
+ (i32.add
+ (local.get $y)
+ (i32.const 1)
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate
+ (local $x i32)
+ (local $y i32)
+ (local.set $x
+ (i32.add
+ (local.get $y)
+ (i32.const 1)
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate2
+ (local $x i32)
+ (local $y i32)
+ (local.set $x
+ (i32.add
+ (local.get $y)
+ (i32.add
+ (i32.const 1)
+ (i32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate3
+ (local $x i32)
+ (local $y i32)
+ (local.set $x
+ (i32.add
+ (i32.const 1)
+ (local.get $y)
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate4
+ (local $x i32)
+ (local $y i32)
+ (local.set $y (i32.const -1))
+ (local.set $x
+ (i32.add
+ (i32.const 1)
+ (local.get $y)
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate5 (param $z i32)
+ (local $x i32)
+ (local $y i32)
+ (if (local.get $z)
+ (local.set $y (i32.const -1)) ;; y is not ssa
+ )
+ (local.set $x
+ (i32.add
+ (i32.const 1)
+ (local.get $y)
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate6 (param $z i32)
+ (local $x i32)
+ (local $y i32)
+ (local.set $y (local.get $z))
+ (local.set $x
+ (i32.add
+ (i32.const 1)
+ (local.get $y)
+ )
+ )
+ (local.set $y (i32.const -2)) ;; y has another set, so not ssa
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate7 (param $z i32)
+ (local $x i32)
+ (local $y i32)
+ (local.set $y (local.get $z))
+ (local.set $x
+ (i32.add
+ (i32.const 1)
+ (local.get $y)
+ )
+ )
+ (if (i32.const 1)
+ (local.set $x ;; x is not ssa
+ (i32.add
+ (i32.const 2)
+ (local.get $y)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-realistic (param $ptr i32)
+ (local $x i32)
+ (local $y i32)
+ (local $z i32)
+ (local.set $x
+ (i32.add
+ (local.get $ptr)
+ (i32.const 8)
+ )
+ )
+ (local.set $y
+ (i32.add
+ (local.get $ptr)
+ (i32.const 16)
+ )
+ )
+ (local.set $z
+ (i32.add
+ (local.get $ptr)
+ (i32.const 24)
+ )
+ )
+ (loop $l
+ (call $offset-realistic
+ (i32.load
+ (local.get $x)
+ )
+ )
+ (call $offset-realistic
+ (i32.load
+ (local.get $y)
+ )
+ )
+ (call $offset-realistic
+ (i32.load
+ (local.get $y)
+ )
+ )
+ (i32.store
+ (local.get $z)
+ (i32.add
+ (i32.load
+ (local.get $z)
+ )
+ (i32.const 1)
+ )
+ )
+ (br_if $l
+ (i32.load
+ (local.get $z)
+ )
+ )
+ )
+ )
+)
+
diff --git a/test/passes/optimize-added-constants_low-memory-unused.txt b/test/passes/optimize-added-constants_low-memory-unused.txt
new file mode 100644
index 000000000..81f2ba216
--- /dev/null
+++ b/test/passes/optimize-added-constants_low-memory-unused.txt
@@ -0,0 +1,383 @@
+(module
+ (type $0 (func))
+ (type $1 (func (param i32)))
+ (type $2 (func (param i32) (result i32)))
+ (func $consts (; 0 ;) (type $0)
+ (drop
+ (i32.load
+ (i32.const 0)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1023)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1024)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 0)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1023)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1024)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1023)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1024)
+ )
+ )
+ (i32.store
+ (i32.const 1)
+ (i32.const 1)
+ )
+ )
+ (func $offsets (; 1 ;) (type $1) (param $x i32)
+ (drop
+ (i32.load offset=1
+ (local.get $x)
+ )
+ )
+ (drop
+ (i32.load offset=8
+ (local.get $x)
+ )
+ )
+ (drop
+ (i32.load offset=1023
+ (local.get $x)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.add
+ (local.get $x)
+ (i32.const 1024)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (i32.add
+ (local.get $x)
+ (i32.const 2048)
+ )
+ )
+ )
+ (drop
+ (i32.load offset=4
+ (local.get $x)
+ )
+ )
+ )
+ (func $load-off-2 (; 2 ;) (type $2) (param $0 i32) (result i32)
+ (i32.store
+ (i32.const 6)
+ (local.get $0)
+ )
+ (i32.store
+ (i32.const 6)
+ (local.get $0)
+ )
+ (i32.store offset=7
+ (local.get $0)
+ (local.get $0)
+ )
+ (i32.store offset=9
+ (local.get $0)
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.add
+ (i32.const -11)
+ (local.get $0)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.add
+ (local.get $0)
+ (i32.const -13)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=19
+ (i32.const -15)
+ (local.get $0)
+ )
+ (i32.store offset=21
+ (i32.const -21)
+ (local.get $0)
+ )
+ (i32.store
+ (i32.const 25)
+ (local.get $0)
+ )
+ (i32.store
+ (i32.const -23)
+ (local.get $0)
+ )
+ (drop
+ (i32.load
+ (i32.const 8)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 8)
+ )
+ )
+ (drop
+ (i32.load offset=8
+ (local.get $0)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 10)
+ )
+ )
+ (i32.load offset=12
+ (local.get $0)
+ )
+ )
+ (func $offset-constant (; 3 ;) (type $0)
+ (drop
+ (i32.load
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 20)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1024)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1023)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 1023)
+ )
+ )
+ (drop
+ (i32.load
+ (i32.const 100511)
+ )
+ )
+ )
+ (func $offset-propagate-param (; 4 ;) (type $1) (param $x i32)
+ (local $y i32)
+ (local.set $x
+ (i32.add
+ (local.get $y)
+ (i32.const 1)
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate (; 5 ;) (type $0)
+ (local $x i32)
+ (local $y i32)
+ (local.set $x
+ (i32.add
+ (local.get $y)
+ (i32.const 1)
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate2 (; 6 ;) (type $0)
+ (local $x i32)
+ (local $y i32)
+ (local.set $x
+ (i32.add
+ (local.get $y)
+ (i32.add
+ (i32.const 1)
+ (i32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate3 (; 7 ;) (type $0)
+ (local $x i32)
+ (local $y i32)
+ (local.set $x
+ (i32.add
+ (i32.const 1)
+ (local.get $y)
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate4 (; 8 ;) (type $0)
+ (local $x i32)
+ (local $y i32)
+ (local.set $y
+ (i32.const -1)
+ )
+ (local.set $x
+ (i32.add
+ (i32.const 1)
+ (local.get $y)
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate5 (; 9 ;) (type $1) (param $z i32)
+ (local $x i32)
+ (local $y i32)
+ (if
+ (local.get $z)
+ (local.set $y
+ (i32.const -1)
+ )
+ )
+ (local.set $x
+ (i32.add
+ (i32.const 1)
+ (local.get $y)
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate6 (; 10 ;) (type $1) (param $z i32)
+ (local $x i32)
+ (local $y i32)
+ (local.set $y
+ (local.get $z)
+ )
+ (local.set $x
+ (i32.add
+ (i32.const 1)
+ (local.get $y)
+ )
+ )
+ (local.set $y
+ (i32.const -2)
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-realistic (; 11 ;) (type $1) (param $ptr i32)
+ (local $x i32)
+ (local $y i32)
+ (local $z i32)
+ (local.set $x
+ (i32.add
+ (local.get $ptr)
+ (i32.const 8)
+ )
+ )
+ (local.set $y
+ (i32.add
+ (local.get $ptr)
+ (i32.const 16)
+ )
+ )
+ (local.set $z
+ (i32.add
+ (local.get $ptr)
+ (i32.const 24)
+ )
+ )
+ (loop $l
+ (call $offset-realistic
+ (i32.load
+ (local.get $x)
+ )
+ )
+ (call $offset-realistic
+ (i32.load
+ (local.get $y)
+ )
+ )
+ (call $offset-realistic
+ (i32.load
+ (local.get $y)
+ )
+ )
+ (i32.store
+ (local.get $z)
+ (i32.add
+ (i32.load
+ (local.get $z)
+ )
+ (i32.const 1)
+ )
+ )
+ (br_if $l
+ (i32.load
+ (local.get $z)
+ )
+ )
+ )
+ )
+)
diff --git a/test/passes/optimize-added-constants_low-memory-unused.wast b/test/passes/optimize-added-constants_low-memory-unused.wast
new file mode 100644
index 000000000..b31f80a25
--- /dev/null
+++ b/test/passes/optimize-added-constants_low-memory-unused.wast
@@ -0,0 +1,391 @@
+(module
+ (func $consts
+ (drop
+ (i32.load (i32.const 0))
+ )
+ (drop
+ (i32.load (i32.const 1))
+ )
+ (drop
+ (i32.load (i32.const 1023))
+ )
+ (drop
+ (i32.load (i32.const 1024))
+ )
+ (drop
+ (i32.load offset=0 (i32.const 0))
+ )
+ (drop
+ (i32.load offset=1 (i32.const 0))
+ )
+ (drop
+ (i32.load offset=1023 (i32.const 0))
+ )
+ (drop
+ (i32.load offset=1024 (i32.const 0))
+ )
+ (drop
+ (i32.load offset=512 (i32.const 511))
+ )
+ (drop
+ (i32.load offset=512 (i32.const 512))
+ )
+ (i32.store (i32.const 1) (i32.const 1))
+ )
+ (func $offsets (param $x i32)
+ (drop
+ (i32.load
+ (i32.add
+ (local.get $x)
+ (i32.const 1)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (i32.add
+ (local.get $x)
+ (i32.const 8)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (i32.add
+ (local.get $x)
+ (i32.const 1023)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (i32.add
+ (local.get $x)
+ (i32.const 1024)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (i32.add
+ (local.get $x)
+ (i32.const 2048)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (i32.add
+ (i32.const 4)
+ (local.get $x)
+ )
+ )
+ )
+ )
+ (func $load-off-2 (param $0 i32) (result i32)
+ (i32.store offset=2
+ (i32.add
+ (i32.const 1)
+ (i32.const 3)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.add
+ (i32.const 3)
+ (i32.const 1)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.add
+ (local.get $0)
+ (i32.const 5)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.add
+ (i32.const 7)
+ (local.get $0)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.add
+ (i32.const -11) ;; do not fold this!
+ (local.get $0)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.add
+ (local.get $0)
+ (i32.const -13) ;; do not fold this!
+ )
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.add
+ (i32.const -15)
+ (i32.const 17)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.add
+ (i32.const -21)
+ (i32.const 19)
+ )
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.const 23)
+ (local.get $0)
+ )
+ (i32.store offset=2
+ (i32.const -25)
+ (local.get $0)
+ )
+ (drop
+ (i32.load offset=2
+ (i32.add
+ (i32.const 2)
+ (i32.const 4)
+ )
+ )
+ )
+ (drop
+ (i32.load offset=2
+ (i32.add
+ (i32.const 4)
+ (i32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.load offset=2
+ (i32.add
+ (local.get $0)
+ (i32.const 6)
+ )
+ )
+ )
+ (drop
+ (i32.load offset=2
+ (i32.const 8)
+ )
+ )
+ (i32.load offset=2
+ (i32.add
+ (i32.const 10)
+ (local.get $0)
+ )
+ )
+ )
+ (func $offset-constant
+ (drop
+ (i32.load offset=10
+ (i32.const 0)
+ )
+ )
+ (drop
+ (i32.load offset=0
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.load offset=10
+ (i32.const 10)
+ )
+ )
+ (drop
+ (i32.load offset=512
+ (i32.const 512)
+ )
+ )
+ (drop
+ (i32.load offset=512
+ (i32.const 511)
+ )
+ )
+ (drop
+ (i32.load offset=511
+ (i32.const 512)
+ )
+ )
+ (drop
+ (i32.load offset=99999
+ (i32.const 512)
+ )
+ )
+ )
+ (func $offset-propagate-param (param $x i32)
+ (local $y i32)
+ (local.set $x
+ (i32.add
+ (local.get $y)
+ (i32.const 1)
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate
+ (local $x i32)
+ (local $y i32)
+ (local.set $x
+ (i32.add
+ (local.get $y)
+ (i32.const 1)
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate2
+ (local $x i32)
+ (local $y i32)
+ (local.set $x
+ (i32.add
+ (local.get $y)
+ (i32.add
+ (i32.const 1)
+ (i32.const 2)
+ )
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate3
+ (local $x i32)
+ (local $y i32)
+ (local.set $x
+ (i32.add
+ (i32.const 1)
+ (local.get $y)
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate4
+ (local $x i32)
+ (local $y i32)
+ (local.set $y (i32.const -1))
+ (local.set $x
+ (i32.add
+ (i32.const 1)
+ (local.get $y)
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate5 (param $z i32)
+ (local $x i32)
+ (local $y i32)
+ (if (local.get $z)
+ (local.set $y (i32.const -1))
+ )
+ (local.set $x
+ (i32.add
+ (i32.const 1)
+ (local.get $y)
+ )
+ )
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-propagate6 (param $z i32)
+ (local $x i32)
+ (local $y i32)
+ (local.set $y (local.get $z))
+ (local.set $x
+ (i32.add
+ (i32.const 1)
+ (local.get $y)
+ )
+ )
+ (local.set $y (i32.const -2))
+ (drop
+ (i32.load
+ (local.get $x)
+ )
+ )
+ )
+ (func $offset-realistic (param $ptr i32)
+ (local $x i32)
+ (local $y i32)
+ (local $z i32)
+ (local.set $x
+ (i32.add
+ (local.get $ptr)
+ (i32.const 8)
+ )
+ )
+ (local.set $y
+ (i32.add
+ (local.get $ptr)
+ (i32.const 16)
+ )
+ )
+ (local.set $z
+ (i32.add
+ (local.get $ptr)
+ (i32.const 24)
+ )
+ )
+ (loop $l
+ (call $offset-realistic
+ (i32.load
+ (local.get $x)
+ )
+ )
+ (call $offset-realistic
+ (i32.load
+ (local.get $y)
+ )
+ )
+ (call $offset-realistic
+ (i32.load
+ (local.get $y)
+ )
+ )
+ (i32.store
+ (local.get $z)
+ (i32.add
+ (i32.load
+ (local.get $z)
+ )
+ (i32.const 1)
+ )
+ )
+ (br_if $l
+ (i32.load
+ (local.get $z)
+ )
+ )
+ )
+ )
+)
+
diff --git a/test/passes/post-emscripten.txt b/test/passes/post-emscripten.txt
index f7b531296..089287fbf 100644
--- a/test/passes/post-emscripten.txt
+++ b/test/passes/post-emscripten.txt
@@ -1,121 +1,10 @@
(module
(type $0 (func (param i32)))
(type $FUNCSIG$ddd (func (param f64 f64) (result f64)))
- (type $2 (func (param i32) (result i32)))
- (type $3 (func))
+ (type $2 (func))
(import "global.Math" "pow" (func $Math_pow (param f64 f64) (result f64)))
(memory $0 256 256)
- (export "load-off-2" (func $load-off-2))
- (func $b0 (; 1 ;) (type $0) (param $x i32)
- (drop
- (i32.load offset=1
- (local.get $x)
- )
- )
- (drop
- (i32.load offset=8
- (local.get $x)
- )
- )
- (drop
- (i32.load offset=1023
- (local.get $x)
- )
- )
- (drop
- (i32.load
- (i32.add
- (local.get $x)
- (i32.const 1024)
- )
- )
- )
- (drop
- (i32.load
- (i32.add
- (local.get $x)
- (i32.const 2048)
- )
- )
- )
- (drop
- (i32.load offset=4
- (local.get $x)
- )
- )
- )
- (func $load-off-2 (; 2 ;) (type $2) (param $0 i32) (result i32)
- (i32.store
- (i32.const 6)
- (local.get $0)
- )
- (i32.store
- (i32.const 6)
- (local.get $0)
- )
- (i32.store offset=7
- (local.get $0)
- (local.get $0)
- )
- (i32.store offset=9
- (local.get $0)
- (local.get $0)
- )
- (i32.store offset=2
- (i32.add
- (i32.const -11)
- (local.get $0)
- )
- (local.get $0)
- )
- (i32.store offset=2
- (i32.add
- (local.get $0)
- (i32.const -13)
- )
- (local.get $0)
- )
- (i32.store
- (i32.const 4)
- (local.get $0)
- )
- (i32.store
- (i32.const 0)
- (local.get $0)
- )
- (i32.store
- (i32.const 25)
- (local.get $0)
- )
- (i32.store
- (i32.const -23)
- (local.get $0)
- )
- (drop
- (i32.load
- (i32.const 8)
- )
- )
- (drop
- (i32.load
- (i32.const 8)
- )
- )
- (drop
- (i32.load offset=8
- (local.get $0)
- )
- )
- (drop
- (i32.load
- (i32.const 10)
- )
- )
- (i32.load offset=12
- (local.get $0)
- )
- )
- (func $pow2 (; 3 ;) (type $3)
+ (func $pow2 (; 1 ;) (type $2)
(local $x f64)
(local $y f64)
(local $2 f64)
@@ -166,7 +55,7 @@
)
)
)
- (func $pow.2 (; 4 ;) (type $3)
+ (func $pow.2 (; 2 ;) (type $2)
(drop
(f64.sqrt
(f64.const 1)
diff --git a/test/passes/post-emscripten.wast b/test/passes/post-emscripten.wast
index b06d07e7a..f3656eebd 100644
--- a/test/passes/post-emscripten.wast
+++ b/test/passes/post-emscripten.wast
@@ -2,157 +2,6 @@
(memory 256 256)
(type $0 (func (param i32)))
(import "global.Math" "pow" (func $Math_pow (param f64 f64) (result f64)))
- (func $b0 (type $0) (param $x i32)
- (drop
- (i32.load
- (i32.add
- (local.get $x)
- (i32.const 1)
- )
- )
- )
- (drop
- (i32.load
- (i32.add
- (local.get $x)
- (i32.const 8)
- )
- )
- )
- (drop
- (i32.load
- (i32.add
- (local.get $x)
- (i32.const 1023)
- )
- )
- )
- (drop
- (i32.load
- (i32.add
- (local.get $x)
- (i32.const 1024)
- )
- )
- )
- (drop
- (i32.load
- (i32.add
- (local.get $x)
- (i32.const 2048)
- )
- )
- )
- (drop
- (i32.load
- (i32.add
- (i32.const 4)
- (local.get $x)
- )
- )
- )
- )
- (func $load-off-2 "load-off-2" (param $0 i32) (result i32)
- (i32.store offset=2
- (i32.add
- (i32.const 1)
- (i32.const 3)
- )
- (local.get $0)
- )
- (i32.store offset=2
- (i32.add
- (i32.const 3)
- (i32.const 1)
- )
- (local.get $0)
- )
- (i32.store offset=2
- (i32.add
- (local.get $0)
- (i32.const 5)
- )
- (local.get $0)
- )
- (i32.store offset=2
- (i32.add
- (i32.const 7)
- (local.get $0)
- )
- (local.get $0)
- )
- (i32.store offset=2
- (i32.add
- (i32.const -11) ;; do not fold this!
- (local.get $0)
- )
- (local.get $0)
- )
- (i32.store offset=2
- (i32.add
- (local.get $0)
- (i32.const -13) ;; do not fold this!
- )
- (local.get $0)
- )
- (i32.store offset=2
- (i32.add
- (i32.const -15)
- (i32.const 17)
- )
- (local.get $0)
- )
- (i32.store offset=2
- (i32.add
- (i32.const -21)
- (i32.const 19)
- )
- (local.get $0)
- )
- (i32.store offset=2
- (i32.const 23)
- (local.get $0)
- )
- (i32.store offset=2
- (i32.const -25)
- (local.get $0)
- )
- (drop
- (i32.load offset=2
- (i32.add
- (i32.const 2)
- (i32.const 4)
- )
- )
- )
- (drop
- (i32.load offset=2
- (i32.add
- (i32.const 4)
- (i32.const 2)
- )
- )
- )
- (drop
- (i32.load offset=2
- (i32.add
- (local.get $0)
- (i32.const 6)
- )
- )
- )
- (drop
- (i32.load offset=2
- (i32.const 8)
- )
- )
- (i32.load offset=2
- (i32.add
- (i32.const 10)
- (local.get $0)
- )
- )
- )
(func $pow2
(local $x f64)
(local $y f64)
diff --git a/test/passes/precompute-propagate.txt b/test/passes/precompute-propagate.txt
index 21b894355..6ebd7bd5b 100644
--- a/test/passes/precompute-propagate.txt
+++ b/test/passes/precompute-propagate.txt
@@ -3,6 +3,7 @@
(type $1 (func (param i32) (result i32)))
(type $2 (func (param i32 i32) (result i32)))
(type $3 (func (param i32 i32 i32) (result i32)))
+ (memory $0 10 10)
(func $basic (; 0 ;) (type $0) (param $p i32)
(local $x i32)
(local.set $x
diff --git a/test/passes/precompute-propagate.wast b/test/passes/precompute-propagate.wast
index 0d53088d3..4b7764b19 100644
--- a/test/passes/precompute-propagate.wast
+++ b/test/passes/precompute-propagate.wast
@@ -1,4 +1,5 @@
(module
+ (memory 10 10)
(func $basic (param $p i32)
(local $x i32)
(local.set $x (i32.const 10))
diff --git a/test/passes/safe-heap_low-memory-unused.txt b/test/passes/safe-heap_low-memory-unused.txt
new file mode 100644
index 000000000..26dcc10e3
--- /dev/null
+++ b/test/passes/safe-heap_low-memory-unused.txt
@@ -0,0 +1,9800 @@
+(module
+ (type $0 (func))
+ (type $FUNCSIG$v (func))
+ (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR i32))
+ (import "env" "segfault" (func $segfault))
+ (import "env" "alignfault" (func $alignfault))
+ (memory $0 (shared 100 100))
+ (func $loads (; 2 ;) (type $0)
+ (drop
+ (call $SAFE_HEAP_LOAD_i32_4_U_4
+ (i32.const 1)
+ (i32.const 0)
+ )
+ )
+ (drop
+ (call $SAFE_HEAP_LOAD_i32_4_U_A
+ (i32.const 1)
+ (i32.const 0)
+ )
+ )
+ (drop
+ (call $SAFE_HEAP_LOAD_i32_4_U_4
+ (i32.const 2)
+ (i32.const 31)
+ )
+ )
+ (drop
+ (call $SAFE_HEAP_LOAD_i32_4_U_2
+ (i32.const 3)
+ (i32.const 0)
+ )
+ )
+ (drop
+ (call $SAFE_HEAP_LOAD_i32_4_U_1
+ (i32.const 4)
+ (i32.const 0)
+ )
+ )
+ (drop
+ (call $SAFE_HEAP_LOAD_i32_1_1
+ (i32.const 5)
+ (i32.const 0)
+ )
+ )
+ (drop
+ (call $SAFE_HEAP_LOAD_i32_2_U_2
+ (i32.const 6)
+ (i32.const 0)
+ )
+ )
+ (drop
+ (call $SAFE_HEAP_LOAD_i64_1_1
+ (i32.const 7)
+ (i32.const 0)
+ )
+ )
+ (drop
+ (call $SAFE_HEAP_LOAD_i64_2_U_2
+ (i32.const 8)
+ (i32.const 0)
+ )
+ )
+ (drop
+ (call $SAFE_HEAP_LOAD_i64_4_4
+ (i32.const 9)
+ (i32.const 0)
+ )
+ )
+ (drop
+ (call $SAFE_HEAP_LOAD_i64_8_U_4
+ (i32.const 10)
+ (i32.const 0)
+ )
+ )
+ (drop
+ (call $SAFE_HEAP_LOAD_i64_8_U_8
+ (i32.const 11)
+ (i32.const 0)
+ )
+ )
+ (drop
+ (call $SAFE_HEAP_LOAD_f32_4_4
+ (i32.const 12)
+ (i32.const 0)
+ )
+ )
+ (drop
+ (call $SAFE_HEAP_LOAD_f64_8_8
+ (i32.const 13)
+ (i32.const 0)
+ )
+ )
+ (drop
+ (call $SAFE_HEAP_LOAD_v128_16_U_16
+ (i32.const 14)
+ (i32.const 0)
+ )
+ )
+ )
+ (func $stores (; 3 ;) (type $0)
+ (call $SAFE_HEAP_STORE_i32_4_4
+ (i32.const 1)
+ (i32.const 0)
+ (i32.const 100)
+ )
+ (call $SAFE_HEAP_STORE_i32_4_A
+ (i32.const 1)
+ (i32.const 0)
+ (i32.const 100)
+ )
+ (call $SAFE_HEAP_STORE_i32_4_4
+ (i32.const 2)
+ (i32.const 31)
+ (i32.const 200)
+ )
+ (call $SAFE_HEAP_STORE_i32_4_2
+ (i32.const 3)
+ (i32.const 0)
+ (i32.const 300)
+ )
+ (call $SAFE_HEAP_STORE_i32_4_1
+ (i32.const 4)
+ (i32.const 0)
+ (i32.const 400)
+ )
+ (call $SAFE_HEAP_STORE_i32_1_1
+ (i32.const 5)
+ (i32.const 0)
+ (i32.const 500)
+ )
+ (call $SAFE_HEAP_STORE_i32_2_2
+ (i32.const 6)
+ (i32.const 0)
+ (i32.const 600)
+ )
+ (call $SAFE_HEAP_STORE_i64_1_1
+ (i32.const 7)
+ (i32.const 0)
+ (i64.const 700)
+ )
+ (call $SAFE_HEAP_STORE_i64_2_2
+ (i32.const 8)
+ (i32.const 0)
+ (i64.const 800)
+ )
+ (call $SAFE_HEAP_STORE_i64_4_4
+ (i32.const 9)
+ (i32.const 0)
+ (i64.const 900)
+ )
+ (call $SAFE_HEAP_STORE_i64_8_4
+ (i32.const 10)
+ (i32.const 0)
+ (i64.const 1000)
+ )
+ (call $SAFE_HEAP_STORE_i64_8_8
+ (i32.const 11)
+ (i32.const 0)
+ (i64.const 1100)
+ )
+ (call $SAFE_HEAP_STORE_f32_4_4
+ (i32.const 12)
+ (i32.const 0)
+ (f32.const 1200)
+ )
+ (call $SAFE_HEAP_STORE_f64_8_8
+ (i32.const 13)
+ (i32.const 0)
+ (f64.const 1300)
+ )
+ (call $SAFE_HEAP_STORE_v128_16_16
+ (i32.const 14)
+ (i32.const 0)
+ (v128.const i32 0x1 0x0 0x0 0x0 0x2 0x0 0x0 0x0 0x3 0x0 0x0 0x0 0x4 0x0 0x0 0x0)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_1_A (; 4 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.shr_s
+ (i32.shl
+ (i32.atomic.load8_u
+ (local.get $2)
+ )
+ (i32.const 24)
+ )
+ (i32.const 24)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_1_1 (; 5 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.load8_s
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_1_U_A (; 6 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.atomic.load8_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_1_U_1 (; 7 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.load8_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_2_1 (; 8 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.load16_s align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_2_A (; 9 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.shr_s
+ (i32.shl
+ (i32.atomic.load16_u
+ (local.get $2)
+ )
+ (i32.const 16)
+ )
+ (i32.const 16)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_2_2 (; 10 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.load16_s
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_2_U_1 (; 11 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.load16_u align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_2_U_A (; 12 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.atomic.load16_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_2_U_2 (; 13 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.load16_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_1 (; 14 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_2 (; 15 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_A (; 16 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i32.atomic.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_4 (; 17 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i32.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_U_1 (; 18 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_U_2 (; 19 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_U_A (; 20 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i32.atomic.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_U_4 (; 21 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i32.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_1_A (; 22 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.shr_s
+ (i64.shl
+ (i64.atomic.load8_u
+ (local.get $2)
+ )
+ (i64.const 56)
+ )
+ (i64.const 56)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_1_1 (; 23 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load8_s
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_1_U_A (; 24 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.atomic.load8_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_1_U_1 (; 25 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load8_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_2_1 (; 26 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load16_s align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_2_A (; 27 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.shr_s
+ (i64.shl
+ (i64.atomic.load16_u
+ (local.get $2)
+ )
+ (i64.const 48)
+ )
+ (i64.const 48)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_2_2 (; 28 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.load16_s
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_2_U_1 (; 29 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load16_u align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_2_U_A (; 30 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.atomic.load16_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_2_U_2 (; 31 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.load16_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_1 (; 32 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load32_s align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_2 (; 33 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.load32_s align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_A (; 34 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.shr_s
+ (i64.shl
+ (i64.atomic.load32_u
+ (local.get $2)
+ )
+ (i64.const 32)
+ )
+ (i64.const 32)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_4 (; 35 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.load32_s
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_U_1 (; 36 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load32_u align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_U_2 (; 37 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.load32_u align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_U_A (; 38 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.atomic.load32_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_U_4 (; 39 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.load32_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_1 (; 40 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_2 (; 41 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_4 (; 42 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.load align=4
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_A (; 43 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (i64.atomic.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_8 (; 44 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (i64.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_U_1 (; 45 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_U_2 (; 46 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_U_4 (; 47 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.load align=4
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_U_A (; 48 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (i64.atomic.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_U_8 (; 49 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (i64.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f32_4_1 (; 50 ;) (param $0 i32) (param $1 i32) (result f32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (f32.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f32_4_2 (; 51 ;) (param $0 i32) (param $1 i32) (result f32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (f32.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f32_4_4 (; 52 ;) (param $0 i32) (param $1 i32) (result f32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (f32.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f64_8_1 (; 53 ;) (param $0 i32) (param $1 i32) (result f64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (f64.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f64_8_2 (; 54 ;) (param $0 i32) (param $1 i32) (result f64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (f64.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f64_8_4 (; 55 ;) (param $0 i32) (param $1 i32) (result f64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (f64.load align=4
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f64_8_8 (; 56 ;) (param $0 i32) (param $1 i32) (result f64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (f64.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_1 (; 57 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (v128.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_2 (; 58 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (v128.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_4 (; 59 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (v128.load align=4
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_8 (; 60 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (v128.load align=8
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_16 (; 61 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 15)
+ )
+ (call $alignfault)
+ )
+ (v128.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_U_1 (; 62 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (v128.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_U_2 (; 63 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (v128.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_U_4 (; 64 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (v128.load align=4
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_U_8 (; 65 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (v128.load align=8
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_U_16 (; 66 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 15)
+ )
+ (call $alignfault)
+ )
+ (v128.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_1_A (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.atomic.store8
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_1_1 (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.store8
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_2_1 (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.store16 align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_2_A (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.atomic.store16
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_2_2 (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.store16
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_4_1 (; 72 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.store align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_4_2 (; 73 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.store align=2
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_4_A (; 74 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i32.atomic.store
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_4_4 (; 75 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i32.store
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_1_A (; 76 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.atomic.store8
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_1_1 (; 77 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.store8
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_2_1 (; 78 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.store16 align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_2_A (; 79 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.atomic.store16
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_2_2 (; 80 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.store16
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_4_1 (; 81 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.store32 align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_4_2 (; 82 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.store32 align=2
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_4_A (; 83 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.atomic.store32
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_4_4 (; 84 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.store32
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_8_1 (; 85 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.store align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_8_2 (; 86 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.store align=2
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_8_4 (; 87 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.store align=4
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_8_A (; 88 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (i64.atomic.store
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_8_8 (; 89 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (i64.store
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f32_4_1 (; 90 ;) (param $0 i32) (param $1 i32) (param $2 f32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (f32.store align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f32_4_2 (; 91 ;) (param $0 i32) (param $1 i32) (param $2 f32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (f32.store align=2
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f32_4_4 (; 92 ;) (param $0 i32) (param $1 i32) (param $2 f32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (f32.store
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f64_8_1 (; 93 ;) (param $0 i32) (param $1 i32) (param $2 f64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (f64.store align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f64_8_2 (; 94 ;) (param $0 i32) (param $1 i32) (param $2 f64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (f64.store align=2
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f64_8_4 (; 95 ;) (param $0 i32) (param $1 i32) (param $2 f64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (f64.store align=4
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f64_8_8 (; 96 ;) (param $0 i32) (param $1 i32) (param $2 f64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (f64.store
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_v128_16_1 (; 97 ;) (param $0 i32) (param $1 i32) (param $2 v128)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (v128.store align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_v128_16_2 (; 98 ;) (param $0 i32) (param $1 i32) (param $2 v128)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (v128.store align=2
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_v128_16_4 (; 99 ;) (param $0 i32) (param $1 i32) (param $2 v128)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (v128.store align=4
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_v128_16_8 (; 100 ;) (param $0 i32) (param $1 i32) (param $2 v128)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (v128.store align=8
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_v128_16_16 (; 101 ;) (param $0 i32) (param $1 i32) (param $2 v128)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 15)
+ )
+ (call $alignfault)
+ )
+ (v128.store
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+)
+(module
+ (type $0 (func))
+ (type $FUNCSIG$v (func))
+ (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR i32))
+ (import "env" "segfault" (func $segfault))
+ (import "env" "alignfault" (func $alignfault))
+ (memory $0 100 100)
+ (func $loads (; 2 ;) (type $0)
+ (drop
+ (call $SAFE_HEAP_LOAD_i32_4_U_4
+ (i32.const 1)
+ (i32.const 0)
+ )
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_1_1 (; 3 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.load8_s
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_1_U_1 (; 4 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.load8_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_2_1 (; 5 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.load16_s align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_2_2 (; 6 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.load16_s
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_2_U_1 (; 7 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.load16_u align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_2_U_2 (; 8 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.load16_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_1 (; 9 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_2 (; 10 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_4 (; 11 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i32.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_U_1 (; 12 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_U_2 (; 13 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_U_4 (; 14 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i32.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_1_1 (; 15 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load8_s
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_1_U_1 (; 16 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load8_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_2_1 (; 17 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load16_s align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_2_2 (; 18 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.load16_s
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_2_U_1 (; 19 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load16_u align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_2_U_2 (; 20 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.load16_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_1 (; 21 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load32_s align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_2 (; 22 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.load32_s align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_4 (; 23 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.load32_s
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_U_1 (; 24 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load32_u align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_U_2 (; 25 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.load32_u align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_U_4 (; 26 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.load32_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_1 (; 27 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_2 (; 28 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_4 (; 29 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.load align=4
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_8 (; 30 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (i64.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_U_1 (; 31 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_U_2 (; 32 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_U_4 (; 33 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.load align=4
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_U_8 (; 34 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (i64.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f32_4_1 (; 35 ;) (param $0 i32) (param $1 i32) (result f32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (f32.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f32_4_2 (; 36 ;) (param $0 i32) (param $1 i32) (result f32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (f32.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f32_4_4 (; 37 ;) (param $0 i32) (param $1 i32) (result f32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (f32.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f64_8_1 (; 38 ;) (param $0 i32) (param $1 i32) (result f64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (f64.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f64_8_2 (; 39 ;) (param $0 i32) (param $1 i32) (result f64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (f64.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f64_8_4 (; 40 ;) (param $0 i32) (param $1 i32) (result f64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (f64.load align=4
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f64_8_8 (; 41 ;) (param $0 i32) (param $1 i32) (result f64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (f64.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_1 (; 42 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (v128.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_2 (; 43 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (v128.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_4 (; 44 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (v128.load align=4
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_8 (; 45 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (v128.load align=8
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_16 (; 46 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 15)
+ )
+ (call $alignfault)
+ )
+ (v128.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_U_1 (; 47 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (v128.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_U_2 (; 48 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (v128.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_U_4 (; 49 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (v128.load align=4
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_U_8 (; 50 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (v128.load align=8
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_U_16 (; 51 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 15)
+ )
+ (call $alignfault)
+ )
+ (v128.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_1_1 (; 52 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.store8
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_2_1 (; 53 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.store16 align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_2_2 (; 54 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.store16
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_4_1 (; 55 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.store align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_4_2 (; 56 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.store align=2
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_4_4 (; 57 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i32.store
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_1_1 (; 58 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.store8
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_2_1 (; 59 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.store16 align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_2_2 (; 60 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.store16
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_4_1 (; 61 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.store32 align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_4_2 (; 62 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.store32 align=2
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_4_4 (; 63 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.store32
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_8_1 (; 64 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.store align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_8_2 (; 65 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.store align=2
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_8_4 (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.store align=4
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_8_8 (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (i64.store
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f32_4_1 (; 68 ;) (param $0 i32) (param $1 i32) (param $2 f32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (f32.store align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f32_4_2 (; 69 ;) (param $0 i32) (param $1 i32) (param $2 f32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (f32.store align=2
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f32_4_4 (; 70 ;) (param $0 i32) (param $1 i32) (param $2 f32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (f32.store
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f64_8_1 (; 71 ;) (param $0 i32) (param $1 i32) (param $2 f64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (f64.store align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f64_8_2 (; 72 ;) (param $0 i32) (param $1 i32) (param $2 f64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (f64.store align=2
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f64_8_4 (; 73 ;) (param $0 i32) (param $1 i32) (param $2 f64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (f64.store align=4
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f64_8_8 (; 74 ;) (param $0 i32) (param $1 i32) (param $2 f64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (f64.store
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_v128_16_1 (; 75 ;) (param $0 i32) (param $1 i32) (param $2 v128)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (v128.store align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_v128_16_2 (; 76 ;) (param $0 i32) (param $1 i32) (param $2 v128)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (v128.store align=2
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_v128_16_4 (; 77 ;) (param $0 i32) (param $1 i32) (param $2 v128)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (v128.store align=4
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_v128_16_8 (; 78 ;) (param $0 i32) (param $1 i32) (param $2 v128)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (v128.store align=8
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_v128_16_16 (; 79 ;) (param $0 i32) (param $1 i32) (param $2 v128)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 15)
+ )
+ (call $alignfault)
+ )
+ (v128.store
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+)
+(module
+ (type $FUNCSIG$v (func))
+ (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR i32))
+ (import "env" "segfault" (func $segfault))
+ (import "env" "alignfault" (func $alignfault))
+ (memory $0 (shared 100 100))
+ (func $actions (; 2 ;) (type $FUNCSIG$v)
+ (drop
+ (call $SAFE_HEAP_LOAD_i32_4_U_4
+ (i32.const 1)
+ (i32.const 0)
+ )
+ )
+ (call $SAFE_HEAP_STORE_i32_4_4
+ (i32.const 1)
+ (i32.const 0)
+ (i32.const 100)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_1_A (; 3 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.shr_s
+ (i32.shl
+ (i32.atomic.load8_u
+ (local.get $2)
+ )
+ (i32.const 24)
+ )
+ (i32.const 24)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_1_1 (; 4 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.load8_s
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_1_U_A (; 5 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.atomic.load8_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_1_U_1 (; 6 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.load8_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_2_1 (; 7 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.load16_s align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_2_A (; 8 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.shr_s
+ (i32.shl
+ (i32.atomic.load16_u
+ (local.get $2)
+ )
+ (i32.const 16)
+ )
+ (i32.const 16)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_2_2 (; 9 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.load16_s
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_2_U_1 (; 10 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.load16_u align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_2_U_A (; 11 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.atomic.load16_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_2_U_2 (; 12 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.load16_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_1 (; 13 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_2 (; 14 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_A (; 15 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i32.atomic.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_4 (; 16 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i32.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_U_1 (; 17 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_U_2 (; 18 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_U_A (; 19 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i32.atomic.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i32_4_U_4 (; 20 ;) (param $0 i32) (param $1 i32) (result i32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i32.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_1_A (; 21 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.shr_s
+ (i64.shl
+ (i64.atomic.load8_u
+ (local.get $2)
+ )
+ (i64.const 56)
+ )
+ (i64.const 56)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_1_1 (; 22 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load8_s
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_1_U_A (; 23 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.atomic.load8_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_1_U_1 (; 24 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load8_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_2_1 (; 25 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load16_s align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_2_A (; 26 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.shr_s
+ (i64.shl
+ (i64.atomic.load16_u
+ (local.get $2)
+ )
+ (i64.const 48)
+ )
+ (i64.const 48)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_2_2 (; 27 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.load16_s
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_2_U_1 (; 28 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load16_u align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_2_U_A (; 29 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.atomic.load16_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_2_U_2 (; 30 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.load16_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_1 (; 31 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load32_s align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_2 (; 32 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.load32_s align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_A (; 33 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.shr_s
+ (i64.shl
+ (i64.atomic.load32_u
+ (local.get $2)
+ )
+ (i64.const 32)
+ )
+ (i64.const 32)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_4 (; 34 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.load32_s
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_U_1 (; 35 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load32_u align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_U_2 (; 36 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.load32_u align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_U_A (; 37 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.atomic.load32_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_4_U_4 (; 38 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.load32_u
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_1 (; 39 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_2 (; 40 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_4 (; 41 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.load align=4
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_A (; 42 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (i64.atomic.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_8 (; 43 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (i64.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_U_1 (; 44 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_U_2 (; 45 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_U_4 (; 46 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.load align=4
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_U_A (; 47 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (i64.atomic.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_i64_8_U_8 (; 48 ;) (param $0 i32) (param $1 i32) (result i64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (i64.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f32_4_1 (; 49 ;) (param $0 i32) (param $1 i32) (result f32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (f32.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f32_4_2 (; 50 ;) (param $0 i32) (param $1 i32) (result f32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (f32.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f32_4_4 (; 51 ;) (param $0 i32) (param $1 i32) (result f32)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (f32.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f64_8_1 (; 52 ;) (param $0 i32) (param $1 i32) (result f64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (f64.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f64_8_2 (; 53 ;) (param $0 i32) (param $1 i32) (result f64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (f64.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f64_8_4 (; 54 ;) (param $0 i32) (param $1 i32) (result f64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (f64.load align=4
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_f64_8_8 (; 55 ;) (param $0 i32) (param $1 i32) (result f64)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (f64.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_1 (; 56 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (v128.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_2 (; 57 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (v128.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_4 (; 58 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (v128.load align=4
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_8 (; 59 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (v128.load align=8
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_16 (; 60 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 15)
+ )
+ (call $alignfault)
+ )
+ (v128.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_U_1 (; 61 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (v128.load align=1
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_U_2 (; 62 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (v128.load align=2
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_U_4 (; 63 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (v128.load align=4
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_U_8 (; 64 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (v128.load align=8
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_LOAD_v128_16_U_16 (; 65 ;) (param $0 i32) (param $1 i32) (result v128)
+ (local $2 i32)
+ (local.set $2
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $2)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $2)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $2)
+ (i32.const 15)
+ )
+ (call $alignfault)
+ )
+ (v128.load
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_1_A (; 66 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.atomic.store8
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_1_1 (; 67 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.store8
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_2_1 (; 68 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.store16 align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_2_A (; 69 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.atomic.store16
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_2_2 (; 70 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.store16
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_4_1 (; 71 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i32.store align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_4_2 (; 72 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i32.store align=2
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_4_A (; 73 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i32.atomic.store
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i32_4_4 (; 74 ;) (param $0 i32) (param $1 i32) (param $2 i32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i32.store
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_1_A (; 75 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.atomic.store8
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_1_1 (; 76 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 1)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.store8
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_2_1 (; 77 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.store16 align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_2_A (; 78 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.atomic.store16
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_2_2 (; 79 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 2)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.store16
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_4_1 (; 80 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.store32 align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_4_2 (; 81 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.store32 align=2
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_4_A (; 82 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.atomic.store32
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_4_4 (; 83 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.store32
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_8_1 (; 84 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (i64.store align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_8_2 (; 85 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (i64.store align=2
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_8_4 (; 86 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (i64.store align=4
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_8_A (; 87 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (i64.atomic.store
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_i64_8_8 (; 88 ;) (param $0 i32) (param $1 i32) (param $2 i64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (i64.store
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f32_4_1 (; 89 ;) (param $0 i32) (param $1 i32) (param $2 f32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (f32.store align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f32_4_2 (; 90 ;) (param $0 i32) (param $1 i32) (param $2 f32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (f32.store align=2
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f32_4_4 (; 91 ;) (param $0 i32) (param $1 i32) (param $2 f32)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 4)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (f32.store
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f64_8_1 (; 92 ;) (param $0 i32) (param $1 i32) (param $2 f64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (f64.store align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f64_8_2 (; 93 ;) (param $0 i32) (param $1 i32) (param $2 f64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (f64.store align=2
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f64_8_4 (; 94 ;) (param $0 i32) (param $1 i32) (param $2 f64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (f64.store align=4
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_f64_8_8 (; 95 ;) (param $0 i32) (param $1 i32) (param $2 f64)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 8)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (f64.store
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_v128_16_1 (; 96 ;) (param $0 i32) (param $1 i32) (param $2 v128)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (v128.store align=1
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_v128_16_2 (; 97 ;) (param $0 i32) (param $1 i32) (param $2 v128)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 1)
+ )
+ (call $alignfault)
+ )
+ (v128.store align=2
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_v128_16_4 (; 98 ;) (param $0 i32) (param $1 i32) (param $2 v128)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 3)
+ )
+ (call $alignfault)
+ )
+ (v128.store align=4
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_v128_16_8 (; 99 ;) (param $0 i32) (param $1 i32) (param $2 v128)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 7)
+ )
+ (call $alignfault)
+ )
+ (v128.store align=8
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+ (func $SAFE_HEAP_STORE_v128_16_16 (; 100 ;) (param $0 i32) (param $1 i32) (param $2 v128)
+ (local $3 i32)
+ (local.set $3
+ (i32.add
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (if
+ (i32.or
+ (i32.lt_u
+ (local.get $3)
+ (i32.const 1024)
+ )
+ (i32.gt_u
+ (i32.add
+ (local.get $3)
+ (i32.const 16)
+ )
+ (i32.load
+ (global.get $DYNAMICTOP_PTR)
+ )
+ )
+ )
+ (call $segfault)
+ )
+ (if
+ (i32.and
+ (local.get $3)
+ (i32.const 15)
+ )
+ (call $alignfault)
+ )
+ (v128.store
+ (local.get $3)
+ (local.get $2)
+ )
+ )
+)
diff --git a/test/passes/safe-heap_low-memory-unused.wast b/test/passes/safe-heap_low-memory-unused.wast
new file mode 100644
index 000000000..a2754b469
--- /dev/null
+++ b/test/passes/safe-heap_low-memory-unused.wast
@@ -0,0 +1,56 @@
+(module
+ (memory (shared 100 100))
+ (func $loads
+ (drop (i32.load (i32.const 1)))
+ (drop (i32.atomic.load (i32.const 1)))
+ (drop (i32.load offset=31 (i32.const 2)))
+ (drop (i32.load align=2 (i32.const 3)))
+ (drop (i32.load align=1 (i32.const 4)))
+ (drop (i32.load8_s (i32.const 5)))
+ (drop (i32.load16_u (i32.const 6)))
+ (drop (i64.load8_s (i32.const 7)))
+ (drop (i64.load16_u (i32.const 8)))
+ (drop (i64.load32_s (i32.const 9)))
+ (drop (i64.load align=4 (i32.const 10)))
+ (drop (i64.load (i32.const 11)))
+ (drop (f32.load (i32.const 12)))
+ (drop (f64.load (i32.const 13)))
+ (drop (v128.load (i32.const 14)))
+ )
+ (func $stores
+ (i32.store (i32.const 1) (i32.const 100))
+ (i32.atomic.store (i32.const 1) (i32.const 100))
+ (i32.store offset=31 (i32.const 2) (i32.const 200))
+ (i32.store align=2 (i32.const 3) (i32.const 300))
+ (i32.store align=1 (i32.const 4) (i32.const 400))
+ (i32.store8 (i32.const 5) (i32.const 500))
+ (i32.store16 (i32.const 6) (i32.const 600))
+ (i64.store8 (i32.const 7) (i64.const 700))
+ (i64.store16 (i32.const 8) (i64.const 800))
+ (i64.store32 (i32.const 9) (i64.const 900))
+ (i64.store align=4 (i32.const 10) (i64.const 1000))
+ (i64.store (i32.const 11) (i64.const 1100))
+ (f32.store (i32.const 12) (f32.const 1200))
+ (f64.store (i32.const 13) (f64.const 1300))
+ (v128.store (i32.const 14) (v128.const i32 1 2 3 4))
+ )
+)
+;; not shared
+(module
+ (memory 100 100)
+ (func $loads
+ (drop (i32.load (i32.const 1)))
+ )
+)
+;; pre-existing
+(module
+ (type $FUNCSIG$v (func))
+ (import "env" "DYNAMICTOP_PTR" (global $DYNAMICTOP_PTR i32))
+ (import "env" "segfault" (func $segfault))
+ (import "env" "alignfault" (func $alignfault))
+ (memory $0 (shared 100 100))
+ (func $actions
+ (drop (i32.load (i32.const 1)))
+ (i32.store (i32.const 1) (i32.const 100))
+ )
+)