summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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))
+ )
+)