summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt6
-rw-r--r--src/tools/spectest-interp.cc1470
-rw-r--r--src/tools/wasm-interp.cc1230
-rw-r--r--test/find_exe.py6
-rw-r--r--test/help/spectest-interp.txt21
-rw-r--r--test/help/wasm-interp.txt5
-rw-r--r--test/interp/callimport-zero-args.txt5
-rw-r--r--test/interp/import.txt9
-rw-r--r--test/interp/logging-all-opcodes.txt7724
-rw-r--r--test/interp/tracing-all-opcodes.txt6
-rwxr-xr-xtest/run-interp.py22
-rwxr-xr-xtest/run-wasm-link.py9
12 files changed, 5433 insertions, 5080 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d64ab65d..9adb2307 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -299,6 +299,12 @@ if (NOT EMSCRIPTEN)
target_link_libraries(wasm-interp m)
endif ()
+ # spectest-interp
+ wabt_executable(spectest-interp src/tools/spectest-interp.cc)
+ if (COMPILER_IS_CLANG OR COMPILER_IS_GNU)
+ target_link_libraries(spectest-interp m)
+ endif ()
+
# wat-desugar
wabt_executable(wat-desugar src/tools/wat-desugar.cc)
diff --git a/src/tools/spectest-interp.cc b/src/tools/spectest-interp.cc
new file mode 100644
index 00000000..24253c9d
--- /dev/null
+++ b/src/tools/spectest-interp.cc
@@ -0,0 +1,1470 @@
+/*
+ * Copyright 2016 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.
+ */
+
+#include <algorithm>
+#include <cassert>
+#include <cinttypes>
+#include <cstdio>
+#include <cstdlib>
+#include <memory>
+#include <string>
+#include <vector>
+
+#include "src/binary-reader-interpreter.h"
+#include "src/binary-reader.h"
+#include "src/cast.h"
+#include "src/error-handler.h"
+#include "src/feature.h"
+#include "src/interpreter.h"
+#include "src/literal.h"
+#include "src/option-parser.h"
+#include "src/resolve-names.h"
+#include "src/stream.h"
+#include "src/validator.h"
+#include "src/wast-lexer.h"
+#include "src/wast-parser.h"
+
+using namespace wabt;
+using namespace wabt::interpreter;
+
+#define V(name, str) str,
+static const char* s_trap_strings[] = {FOREACH_INTERPRETER_RESULT(V)};
+#undef V
+
+static int s_verbose;
+static const char* s_infile;
+static Thread::Options s_thread_options;
+static bool s_trace;
+static Features s_features;
+
+static std::unique_ptr<FileStream> s_log_stream;
+static std::unique_ptr<FileStream> s_stdout_stream;
+
+enum class RunVerbosity {
+ Quiet = 0,
+ Verbose = 1,
+};
+
+static const char s_description[] =
+R"( read a Spectest JSON file, and run its tests in the interpreter.
+
+examples:
+ # parse test.json and run the spec tests
+ $ spectest-interp test.json
+)";
+
+static void ParseOptions(int argc, char** argv) {
+ OptionParser parser("spectest-interp", s_description);
+
+ parser.AddOption('v', "verbose", "Use multiple times for more info", []() {
+ s_verbose++;
+ s_log_stream = FileStream::CreateStdout();
+ });
+ parser.AddHelpOption();
+ s_features.AddOptions(&parser);
+ parser.AddOption('V', "value-stack-size", "SIZE",
+ "Size in elements of the value stack",
+ [](const std::string& argument) {
+ // TODO(binji): validate.
+ s_thread_options.value_stack_size = atoi(argument.c_str());
+ });
+ parser.AddOption('C', "call-stack-size", "SIZE",
+ "Size in elements of the call stack",
+ [](const std::string& argument) {
+ // TODO(binji): validate.
+ s_thread_options.call_stack_size = atoi(argument.c_str());
+ });
+ parser.AddOption('t', "trace", "Trace execution", []() { s_trace = true; });
+
+ parser.AddArgument("filename", OptionParser::ArgumentCount::One,
+ [](const char* argument) { s_infile = argument; });
+ parser.Parse(argc, argv);
+}
+
+enum class ModuleType {
+ Text,
+ Binary,
+};
+
+static string_view GetDirname(string_view path) {
+ // Strip everything after and including the last slash (or backslash), e.g.:
+ //
+ // s = "foo/bar/baz", => "foo/bar"
+ // s = "/usr/local/include/stdio.h", => "/usr/local/include"
+ // s = "foo.bar", => ""
+ // s = "some\windows\directory", => "some\windows"
+ size_t last_slash = path.find_last_of('/');
+ size_t last_backslash = path.find_last_of('\\');
+ if (last_slash == string_view::npos)
+ last_slash = 0;
+ if (last_backslash == string_view::npos)
+ last_backslash = 0;
+
+ return path.substr(0, std::max(last_slash, last_backslash));
+}
+
+/* Not sure, but 100 chars is probably safe */
+#define MAX_TYPED_VALUE_CHARS 100
+
+static void SPrintTypedValue(char* buffer, size_t size, const TypedValue* tv) {
+ switch (tv->type) {
+ case Type::I32:
+ snprintf(buffer, size, "i32:%u", tv->value.i32);
+ break;
+
+ case Type::I64:
+ snprintf(buffer, size, "i64:%" PRIu64, tv->value.i64);
+ break;
+
+ case Type::F32: {
+ float value;
+ memcpy(&value, &tv->value.f32_bits, sizeof(float));
+ snprintf(buffer, size, "f32:%f", value);
+ break;
+ }
+
+ case Type::F64: {
+ double value;
+ memcpy(&value, &tv->value.f64_bits, sizeof(double));
+ snprintf(buffer, size, "f64:%f", value);
+ break;
+ }
+
+ default:
+ WABT_UNREACHABLE;
+ }
+}
+
+static void PrintTypedValue(const TypedValue* tv) {
+ char buffer[MAX_TYPED_VALUE_CHARS];
+ SPrintTypedValue(buffer, sizeof(buffer), tv);
+ printf("%s", buffer);
+}
+
+static void PrintTypedValueVector(const std::vector<TypedValue>& values) {
+ for (size_t i = 0; i < values.size(); ++i) {
+ PrintTypedValue(&values[i]);
+ if (i != values.size() - 1)
+ printf(", ");
+ }
+}
+
+static void PrintInterpreterResult(const char* desc,
+ interpreter::Result iresult) {
+ printf("%s: %s\n", desc, s_trap_strings[static_cast<size_t>(iresult)]);
+}
+
+static void PrintCall(string_view module_name,
+ string_view func_name,
+ const std::vector<TypedValue>& args,
+ const std::vector<TypedValue>& results,
+ interpreter::Result iresult) {
+ if (!module_name.empty())
+ printf(PRIstringview ".", WABT_PRINTF_STRING_VIEW_ARG(module_name));
+ printf(PRIstringview "(", WABT_PRINTF_STRING_VIEW_ARG(func_name));
+ PrintTypedValueVector(args);
+ printf(") =>");
+ if (iresult == interpreter::Result::Ok) {
+ if (results.size() > 0) {
+ printf(" ");
+ PrintTypedValueVector(results);
+ }
+ printf("\n");
+ } else {
+ PrintInterpreterResult(" error", iresult);
+ }
+}
+
+static interpreter::Result RunFunction(Thread* thread,
+ Index func_index,
+ const std::vector<TypedValue>& args,
+ std::vector<TypedValue>* out_results) {
+ return s_trace ? thread->TraceFunction(func_index, s_stdout_stream.get(),
+ args, out_results)
+ : thread->RunFunction(func_index, args, out_results);
+}
+
+static interpreter::Result RunStartFunction(Thread* thread,
+ DefinedModule* module) {
+ if (module->start_func_index == kInvalidIndex)
+ return interpreter::Result::Ok;
+
+ if (s_trace)
+ printf(">>> running start function:\n");
+ std::vector<TypedValue> args;
+ std::vector<TypedValue> results;
+ interpreter::Result iresult =
+ RunFunction(thread, module->start_func_index, args, &results);
+ assert(results.size() == 0);
+ return iresult;
+}
+
+static interpreter::Result RunExport(Thread* thread,
+ const interpreter::Export* export_,
+ const std::vector<TypedValue>& args,
+ std::vector<TypedValue>* out_results) {
+ if (s_trace) {
+ printf(">>> running export \"" PRIstringview "\":\n",
+ WABT_PRINTF_STRING_VIEW_ARG(export_->name));
+ }
+
+ assert(export_->kind == ExternalKind::Func);
+ return RunFunction(thread, export_->index, args, out_results);
+}
+
+static interpreter::Result RunExportByName(Thread* thread,
+ interpreter::Module* module,
+ string_view name,
+ const std::vector<TypedValue>& args,
+ std::vector<TypedValue>* out_results,
+ RunVerbosity verbose) {
+ interpreter::Export* export_ = module->GetExport(name);
+ if (!export_)
+ return interpreter::Result::UnknownExport;
+ if (export_->kind != ExternalKind::Func)
+ return interpreter::Result::ExportKindMismatch;
+ return RunExport(thread, export_, args, out_results);
+}
+
+static interpreter::Result GetGlobalExportByName(
+ Thread* thread,
+ interpreter::Module* module,
+ string_view name,
+ std::vector<TypedValue>* out_results) {
+ interpreter::Export* export_ = module->GetExport(name);
+ if (!export_)
+ return interpreter::Result::UnknownExport;
+ if (export_->kind != ExternalKind::Global)
+ return interpreter::Result::ExportKindMismatch;
+
+ interpreter::Global* global = thread->env()->GetGlobal(export_->index);
+ out_results->clear();
+ out_results->push_back(global->typed_value);
+ return interpreter::Result::Ok;
+}
+
+static wabt::Result ReadModule(const char* module_filename,
+ Environment* env,
+ ErrorHandler* error_handler,
+ DefinedModule** out_module) {
+ wabt::Result result;
+ std::vector<uint8_t> file_data;
+
+ *out_module = nullptr;
+
+ result = ReadFile(module_filename, &file_data);
+ if (Succeeded(result)) {
+ const bool kReadDebugNames = true;
+ const bool kStopOnFirstError = true;
+ ReadBinaryOptions options(s_features, s_log_stream.get(), kReadDebugNames,
+ kStopOnFirstError);
+ result = ReadBinaryInterpreter(env, DataOrNull(file_data), file_data.size(),
+ &options, error_handler, out_module);
+
+ if (Succeeded(result)) {
+ if (s_verbose)
+ env->DisassembleModule(s_stdout_stream.get(), *out_module);
+ }
+ }
+ return result;
+}
+
+static interpreter::Result DefaultHostCallback(
+ const HostFunc* func,
+ const interpreter::FuncSignature* sig,
+ Index num_args,
+ TypedValue* args,
+ Index num_results,
+ TypedValue* out_results,
+ void* user_data) {
+ memset(out_results, 0, sizeof(TypedValue) * num_results);
+ for (Index i = 0; i < num_results; ++i)
+ out_results[i].type = sig->result_types[i];
+
+ std::vector<TypedValue> vec_args(args, args + num_args);
+ std::vector<TypedValue> vec_results(out_results, out_results + num_results);
+
+ printf("called host ");
+ PrintCall(func->module_name, func->field_name, vec_args, vec_results,
+ interpreter::Result::Ok);
+ return interpreter::Result::Ok;
+}
+
+#define PRIimport "\"" PRIstringview "." PRIstringview "\""
+#define PRINTF_IMPORT_ARG(x) \
+ WABT_PRINTF_STRING_VIEW_ARG((x).module_name) \
+ , WABT_PRINTF_STRING_VIEW_ARG((x).field_name)
+
+class SpectestHostImportDelegate : public HostImportDelegate {
+ public:
+ wabt::Result ImportFunc(interpreter::FuncImport* import,
+ interpreter::Func* func,
+ interpreter::FuncSignature* func_sig,
+ const ErrorCallback& callback) override {
+ if (import->field_name == "print") {
+ cast<HostFunc>(func)->callback = DefaultHostCallback;
+ return wabt::Result::Ok;
+ } else {
+ PrintError(callback, "unknown host function import " PRIimport,
+ PRINTF_IMPORT_ARG(*import));
+ return wabt::Result::Error;
+ }
+ }
+
+ wabt::Result ImportTable(interpreter::TableImport* import,
+ interpreter::Table* table,
+ const ErrorCallback& callback) override {
+ if (import->field_name == "table") {
+ table->limits.has_max = true;
+ table->limits.initial = 10;
+ table->limits.max = 20;
+ return wabt::Result::Ok;
+ } else {
+ PrintError(callback, "unknown host table import " PRIimport,
+ PRINTF_IMPORT_ARG(*import));
+ return wabt::Result::Error;
+ }
+ }
+
+ wabt::Result ImportMemory(interpreter::MemoryImport* import,
+ interpreter::Memory* memory,
+ const ErrorCallback& callback) override {
+ if (import->field_name == "memory") {
+ memory->page_limits.has_max = true;
+ memory->page_limits.initial = 1;
+ memory->page_limits.max = 2;
+ memory->data.resize(memory->page_limits.initial * WABT_MAX_PAGES);
+ return wabt::Result::Ok;
+ } else {
+ PrintError(callback, "unknown host memory import " PRIimport,
+ PRINTF_IMPORT_ARG(*import));
+ return wabt::Result::Error;
+ }
+ }
+
+ wabt::Result ImportGlobal(interpreter::GlobalImport* import,
+ interpreter::Global* global,
+ const ErrorCallback& callback) override {
+ if (import->field_name == "global") {
+ switch (global->typed_value.type) {
+ case Type::I32:
+ global->typed_value.value.i32 = 666;
+ break;
+
+ case Type::F32: {
+ float value = 666.6f;
+ memcpy(&global->typed_value.value.f32_bits, &value, sizeof(value));
+ break;
+ }
+
+ case Type::I64:
+ global->typed_value.value.i64 = 666;
+ break;
+
+ case Type::F64: {
+ double value = 666.6;
+ memcpy(&global->typed_value.value.f64_bits, &value, sizeof(value));
+ break;
+ }
+
+ default:
+ PrintError(callback, "bad type for host global import " PRIimport,
+ PRINTF_IMPORT_ARG(*import));
+ return wabt::Result::Error;
+ }
+
+ return wabt::Result::Ok;
+ } else {
+ PrintError(callback, "unknown host global import " PRIimport,
+ PRINTF_IMPORT_ARG(*import));
+ return wabt::Result::Error;
+ }
+ }
+
+ private:
+ void PrintError(const ErrorCallback& callback, const char* format, ...) {
+ WABT_SNPRINTF_ALLOCA(buffer, length, format);
+ callback(buffer);
+ }
+};
+
+static void InitEnvironment(Environment* env) {
+ HostModule* host_module = env->AppendHostModule("spectest");
+ host_module->import_delegate.reset(new SpectestHostImportDelegate());
+}
+
+enum class ActionType {
+ Invoke,
+ Get,
+};
+
+struct Action {
+ ::ActionType type = ::ActionType::Invoke;
+ std::string module_name;
+ std::string field_name;
+ std::vector<TypedValue> args;
+};
+
+// An extremely simple JSON parser that only knows how to parse the expected
+// format from wat2wasm.
+class SpecJSONParser {
+ public:
+ SpecJSONParser() : thread_(&env_, s_thread_options) {}
+
+ wabt::Result ReadFile(const char* spec_json_filename);
+ wabt::Result ParseCommands();
+
+ int passed() const { return passed_; }
+ int total() const { return total_; }
+
+ private:
+ void WABT_PRINTF_FORMAT(2, 3) PrintParseError(const char* format, ...);
+ void WABT_PRINTF_FORMAT(2, 3) PrintCommandError(const char* format, ...);
+
+ void PutbackChar();
+ int ReadChar();
+ void SkipWhitespace();
+ bool Match(const char* s);
+ wabt::Result Expect(const char* s);
+ wabt::Result ExpectKey(const char* key);
+ wabt::Result ParseUint32(uint32_t* out_int);
+ wabt::Result ParseString(std::string* out_string);
+ wabt::Result ParseKeyStringValue(const char* key, std::string* out_string);
+ wabt::Result ParseOptNameStringValue(std::string* out_string);
+ wabt::Result ParseLine();
+ wabt::Result ParseTypeObject(Type* out_type);
+ wabt::Result ParseTypeVector(TypeVector* out_types);
+ wabt::Result ParseConst(TypedValue* out_value);
+ wabt::Result ParseConstVector(std::vector<TypedValue>* out_values);
+ wabt::Result ParseAction(::Action* out_action);
+ wabt::Result ParseModuleType(ModuleType* out_type);
+
+ std::string CreateModulePath(string_view filename);
+
+ wabt::Result OnModuleCommand(string_view filename, string_view name);
+ wabt::Result RunAction(::Action* action,
+ interpreter::Result* out_iresult,
+ std::vector<TypedValue>* out_results,
+ RunVerbosity verbose);
+ wabt::Result OnActionCommand(::Action* action);
+ wabt::Result ReadInvalidTextModule(const char* module_filename,
+ Environment* env,
+ ErrorHandler* error_handler);
+ wabt::Result ReadInvalidModule(const char* module_filename,
+ Environment* env,
+ ModuleType module_type,
+ const char* desc);
+ wabt::Result OnAssertMalformedCommand(string_view filename,
+ string_view text,
+ ModuleType module_type);
+ wabt::Result OnRegisterCommand(string_view name, string_view as);
+ wabt::Result OnAssertUnlinkableCommand(string_view filename,
+ string_view text,
+ ModuleType module_type);
+ wabt::Result OnAssertInvalidCommand(string_view filename,
+ string_view text,
+ ModuleType module_type);
+ wabt::Result OnAssertUninstantiableCommand(string_view filename,
+ string_view text,
+ ModuleType module_type);
+ wabt::Result OnAssertReturnCommand(::Action* action,
+ const std::vector<TypedValue>& expected);
+ wabt::Result OnAssertReturnNanCommand(::Action* action, bool canonical);
+ wabt::Result OnAssertTrapCommand(::Action* action, string_view text);
+ wabt::Result OnAssertExhaustionCommand(::Action* action);
+ wabt::Result ParseCommand();
+
+ Environment env_;
+ Thread thread_;
+ DefinedModule* last_module_ = nullptr;
+
+ // Parsing info.
+ std::vector<uint8_t> json_data_;
+ std::string source_filename_;
+ size_t json_offset_ = 0;
+ Location loc_;
+ Location prev_loc_;
+ bool has_prev_loc_ = false;
+ uint32_t command_line_number_ = 0;
+
+ // Test info.
+ int passed_ = 0;
+ int total_ = 0;
+};
+
+#define EXPECT(x) CHECK_RESULT(Expect(x))
+#define EXPECT_KEY(x) CHECK_RESULT(ExpectKey(x))
+#define PARSE_KEY_STRING_VALUE(key, value) \
+ CHECK_RESULT(ParseKeyStringValue(key, value))
+
+wabt::Result SpecJSONParser::ReadFile(const char* spec_json_filename) {
+ loc_.filename = spec_json_filename;
+ loc_.line = 1;
+ loc_.first_column = 1;
+ InitEnvironment(&env_);
+
+ return wabt::ReadFile(spec_json_filename, &json_data_);
+}
+
+void SpecJSONParser::PrintParseError(const char* format, ...) {
+ WABT_SNPRINTF_ALLOCA(buffer, length, format);
+ fprintf(stderr, "%s:%d:%d: %s\n", loc_.filename, loc_.line, loc_.first_column,
+ buffer);
+}
+
+void SpecJSONParser::PrintCommandError(const char* format, ...) {
+ WABT_SNPRINTF_ALLOCA(buffer, length, format);
+ printf(PRIstringview ":%u: %s\n",
+ WABT_PRINTF_STRING_VIEW_ARG(source_filename_), command_line_number_,
+ buffer);
+}
+
+void SpecJSONParser::PutbackChar() {
+ assert(has_prev_loc_);
+ json_offset_--;
+ loc_ = prev_loc_;
+ has_prev_loc_ = false;
+}
+
+int SpecJSONParser::ReadChar() {
+ if (json_offset_ >= json_data_.size())
+ return -1;
+ prev_loc_ = loc_;
+ char c = json_data_[json_offset_++];
+ if (c == '\n') {
+ loc_.line++;
+ loc_.first_column = 1;
+ } else {
+ loc_.first_column++;
+ }
+ has_prev_loc_ = true;
+ return c;
+}
+
+void SpecJSONParser::SkipWhitespace() {
+ while (1) {
+ switch (ReadChar()) {
+ case -1:
+ return;
+
+ case ' ':
+ case '\t':
+ case '\n':
+ case '\r':
+ break;
+
+ default:
+ PutbackChar();
+ return;
+ }
+ }
+}
+
+bool SpecJSONParser::Match(const char* s) {
+ SkipWhitespace();
+ Location start_loc = loc_;
+ size_t start_offset = json_offset_;
+ while (*s && *s == ReadChar())
+ s++;
+
+ if (*s == 0) {
+ return true;
+ } else {
+ json_offset_ = start_offset;
+ loc_ = start_loc;
+ return false;
+ }
+}
+
+wabt::Result SpecJSONParser::Expect(const char* s) {
+ if (Match(s)) {
+ return wabt::Result::Ok;
+ } else {
+ PrintParseError("expected %s", s);
+ return wabt::Result::Error;
+ }
+}
+
+wabt::Result SpecJSONParser::ExpectKey(const char* key) {
+ size_t keylen = strlen(key);
+ size_t quoted_len = keylen + 2 + 1;
+ char* quoted = static_cast<char*>(alloca(quoted_len));
+ snprintf(quoted, quoted_len, "\"%s\"", key);
+ EXPECT(quoted);
+ EXPECT(":");
+ return wabt::Result::Ok;
+}
+
+wabt::Result SpecJSONParser::ParseUint32(uint32_t* out_int) {
+ uint32_t result = 0;
+ SkipWhitespace();
+ while (1) {
+ int c = ReadChar();
+ if (c >= '0' && c <= '9') {
+ uint32_t last_result = result;
+ result = result * 10 + static_cast<uint32_t>(c - '0');
+ if (result < last_result) {
+ PrintParseError("uint32 overflow");
+ return wabt::Result::Error;
+ }
+ } else {
+ PutbackChar();
+ break;
+ }
+ }
+ *out_int = result;
+ return wabt::Result::Ok;
+}
+
+wabt::Result SpecJSONParser::ParseString(std::string* out_string) {
+ out_string->clear();
+
+ SkipWhitespace();
+ if (ReadChar() != '"') {
+ PrintParseError("expected string");
+ return wabt::Result::Error;
+ }
+
+ while (1) {
+ int c = ReadChar();
+ if (c == '"') {
+ break;
+ } else if (c == '\\') {
+ /* The only escape supported is \uxxxx. */
+ c = ReadChar();
+ if (c != 'u') {
+ PrintParseError("expected escape: \\uxxxx");
+ return wabt::Result::Error;
+ }
+ uint16_t code = 0;
+ for (int i = 0; i < 4; ++i) {
+ c = ReadChar();
+ int cval;
+ if (c >= '0' && c <= '9') {
+ cval = c - '0';
+ } else if (c >= 'a' && c <= 'f') {
+ cval = c - 'a' + 10;
+ } else if (c >= 'A' && c <= 'F') {
+ cval = c - 'A' + 10;
+ } else {
+ PrintParseError("expected hex char");
+ return wabt::Result::Error;
+ }
+ code = (code << 4) + cval;
+ }
+
+ if (code < 256) {
+ *out_string += code;
+ } else {
+ PrintParseError("only escape codes < 256 allowed, got %u\n", code);
+ }
+ } else {
+ *out_string += c;
+ }
+ }
+ return wabt::Result::Ok;
+}
+
+wabt::Result SpecJSONParser::ParseKeyStringValue(const char* key,
+ std::string* out_string) {
+ out_string->clear();
+ EXPECT_KEY(key);
+ return ParseString(out_string);
+}
+
+wabt::Result SpecJSONParser::ParseOptNameStringValue(std::string* out_string) {
+ out_string->clear();
+ if (Match("\"name\"")) {
+ EXPECT(":");
+ CHECK_RESULT(ParseString(out_string));
+ EXPECT(",");
+ }
+ return wabt::Result::Ok;
+}
+
+wabt::Result SpecJSONParser::ParseLine() {
+ EXPECT_KEY("line");
+ CHECK_RESULT(ParseUint32(&command_line_number_));
+ return wabt::Result::Ok;
+}
+
+wabt::Result SpecJSONParser::ParseTypeObject(Type* out_type) {
+ std::string type_str;
+ EXPECT("{");
+ PARSE_KEY_STRING_VALUE("type", &type_str);
+ EXPECT("}");
+
+ if (type_str == "i32") {
+ *out_type = Type::I32;
+ return wabt::Result::Ok;
+ } else if (type_str == "f32") {
+ *out_type = Type::F32;
+ return wabt::Result::Ok;
+ } else if (type_str == "i64") {
+ *out_type = Type::I64;
+ return wabt::Result::Ok;
+ } else if (type_str == "f64") {
+ *out_type = Type::F64;
+ return wabt::Result::Ok;
+ } else {
+ PrintParseError("unknown type: \"" PRIstringview "\"",
+ WABT_PRINTF_STRING_VIEW_ARG(type_str));
+ return wabt::Result::Error;
+ }
+}
+
+wabt::Result SpecJSONParser::ParseTypeVector(TypeVector* out_types) {
+ out_types->clear();
+ EXPECT("[");
+ bool first = true;
+ while (!Match("]")) {
+ if (!first)
+ EXPECT(",");
+ Type type;
+ CHECK_RESULT(ParseTypeObject(&type));
+ first = false;
+ out_types->push_back(type);
+ }
+ return wabt::Result::Ok;
+}
+
+wabt::Result SpecJSONParser::ParseConst(TypedValue* out_value) {
+ std::string type_str;
+ std::string value_str;
+ EXPECT("{");
+ PARSE_KEY_STRING_VALUE("type", &type_str);
+ EXPECT(",");
+ PARSE_KEY_STRING_VALUE("value", &value_str);
+ EXPECT("}");
+
+ const char* value_start = value_str.data();
+ const char* value_end = value_str.data() + value_str.size();
+
+ if (type_str == "i32") {
+ uint32_t value;
+ CHECK_RESULT(
+ ParseInt32(value_start, value_end, &value, ParseIntType::UnsignedOnly));
+ out_value->type = Type::I32;
+ out_value->value.i32 = value;
+ return wabt::Result::Ok;
+ } else if (type_str == "f32") {
+ uint32_t value_bits;
+ CHECK_RESULT(ParseInt32(value_start, value_end, &value_bits,
+ ParseIntType::UnsignedOnly));
+ out_value->type = Type::F32;
+ out_value->value.f32_bits = value_bits;
+ return wabt::Result::Ok;
+ } else if (type_str == "i64") {
+ uint64_t value;
+ CHECK_RESULT(
+ ParseInt64(value_start, value_end, &value, ParseIntType::UnsignedOnly));
+ out_value->type = Type::I64;
+ out_value->value.i64 = value;
+ return wabt::Result::Ok;
+ } else if (type_str == "f64") {
+ uint64_t value_bits;
+ CHECK_RESULT(ParseInt64(value_start, value_end, &value_bits,
+ ParseIntType::UnsignedOnly));
+ out_value->type = Type::F64;
+ out_value->value.f64_bits = value_bits;
+ return wabt::Result::Ok;
+ } else {
+ PrintParseError("unknown type: \"" PRIstringview "\"",
+ WABT_PRINTF_STRING_VIEW_ARG(type_str));
+ return wabt::Result::Error;
+ }
+}
+
+wabt::Result SpecJSONParser::ParseConstVector(
+ std::vector<TypedValue>* out_values) {
+ out_values->clear();
+ EXPECT("[");
+ bool first = true;
+ while (!Match("]")) {
+ if (!first)
+ EXPECT(",");
+ TypedValue value;
+ CHECK_RESULT(ParseConst(&value));
+ out_values->push_back(value);
+ first = false;
+ }
+ return wabt::Result::Ok;
+}
+
+wabt::Result SpecJSONParser::ParseAction(::Action* out_action) {
+ EXPECT_KEY("action");
+ EXPECT("{");
+ EXPECT_KEY("type");
+ if (Match("\"invoke\"")) {
+ out_action->type = ::ActionType::Invoke;
+ } else {
+ EXPECT("\"get\"");
+ out_action->type = ::ActionType::Get;
+ }
+ EXPECT(",");
+ if (Match("\"module\"")) {
+ EXPECT(":");
+ CHECK_RESULT(ParseString(&out_action->module_name));
+ EXPECT(",");
+ }
+ PARSE_KEY_STRING_VALUE("field", &out_action->field_name);
+ if (out_action->type == ::ActionType::Invoke) {
+ EXPECT(",");
+ EXPECT_KEY("args");
+ CHECK_RESULT(ParseConstVector(&out_action->args));
+ }
+ EXPECT("}");
+ return wabt::Result::Ok;
+}
+
+wabt::Result SpecJSONParser::ParseModuleType(ModuleType* out_type) {
+ std::string module_type_str;
+
+ PARSE_KEY_STRING_VALUE("module_type", &module_type_str);
+ if (module_type_str == "text") {
+ *out_type = ModuleType::Text;
+ return wabt::Result::Ok;
+ } else if (module_type_str == "binary") {
+ *out_type = ModuleType::Binary;
+ return wabt::Result::Ok;
+ } else {
+ PrintParseError("unknown module type: \"" PRIstringview "\"",
+ WABT_PRINTF_STRING_VIEW_ARG(module_type_str));
+ return wabt::Result::Error;
+ }
+}
+
+std::string SpecJSONParser::CreateModulePath(string_view filename) {
+ const char* spec_json_filename = loc_.filename;
+ string_view dirname = GetDirname(spec_json_filename);
+ std::string path;
+
+ if (dirname.size() == 0) {
+ path = filename.to_string();
+ } else {
+ path = dirname.to_string();
+ path += '/';
+ path += filename.to_string();
+ }
+
+ ConvertBackslashToSlash(&path);
+ return path;
+}
+
+wabt::Result SpecJSONParser::OnModuleCommand(string_view filename,
+ string_view name) {
+ std::string path = CreateModulePath(filename);
+ Environment::MarkPoint mark = env_.Mark();
+ ErrorHandlerFile error_handler(Location::Type::Binary);
+ wabt::Result result =
+ ReadModule(path.c_str(), &env_, &error_handler, &last_module_);
+
+ if (Failed(result)) {
+ env_.ResetToMarkPoint(mark);
+ PrintCommandError("error reading module: \"%s\"", path.c_str());
+ return wabt::Result::Error;
+ }
+
+ interpreter::Result iresult = RunStartFunction(&thread_, last_module_);
+ if (iresult != interpreter::Result::Ok) {
+ env_.ResetToMarkPoint(mark);
+ PrintInterpreterResult("error running start function", iresult);
+ return wabt::Result::Error;
+ }
+
+ if (!name.empty()) {
+ last_module_->name = name.to_string();
+ env_.EmplaceModuleBinding(name.to_string(),
+ Binding(env_.GetModuleCount() - 1));
+ }
+ return wabt::Result::Ok;
+}
+
+wabt::Result SpecJSONParser::RunAction(::Action* action,
+ interpreter::Result* out_iresult,
+ std::vector<TypedValue>* out_results,
+ RunVerbosity verbose) {
+ out_results->clear();
+
+ interpreter::Module* module;
+ if (!action->module_name.empty()) {
+ module = env_.FindModule(action->module_name);
+ } else {
+ module = env_.GetLastModule();
+ }
+ assert(module);
+
+ switch (action->type) {
+ case ::ActionType::Invoke:
+ *out_iresult = RunExportByName(&thread_, module, action->field_name,
+ action->args, out_results, verbose);
+ if (verbose == RunVerbosity::Verbose) {
+ PrintCall(string_view(), action->field_name, action->args, *out_results,
+ *out_iresult);
+ }
+ return wabt::Result::Ok;
+
+ case ::ActionType::Get: {
+ *out_iresult = GetGlobalExportByName(&thread_, module, action->field_name,
+ out_results);
+ return wabt::Result::Ok;
+ }
+
+ default:
+ PrintCommandError("invalid action type %d",
+ static_cast<int>(action->type));
+ return wabt::Result::Error;
+ }
+}
+
+wabt::Result SpecJSONParser::OnActionCommand(::Action* action) {
+ std::vector<TypedValue> results;
+ interpreter::Result iresult;
+
+ total_++;
+ wabt::Result result =
+ RunAction(action, &iresult, &results, RunVerbosity::Verbose);
+ if (Succeeded(result)) {
+ if (iresult == interpreter::Result::Ok) {
+ passed_++;
+ } else {
+ PrintCommandError("unexpected trap: %s",
+ s_trap_strings[static_cast<size_t>(iresult)]);
+ result = wabt::Result::Error;
+ }
+ }
+
+ return result;
+}
+
+wabt::Result SpecJSONParser::ReadInvalidTextModule(
+ const char* module_filename,
+ Environment* env,
+ ErrorHandler* error_handler) {
+ std::unique_ptr<WastLexer> lexer =
+ WastLexer::CreateFileLexer(module_filename);
+ std::unique_ptr<Script> script;
+ wabt::Result result = ParseWastScript(lexer.get(), &script, error_handler);
+ if (Succeeded(result)) {
+ wabt::Module* module = script->GetFirstModule();
+ result = ResolveNamesModule(lexer.get(), module, error_handler);
+ if (Succeeded(result)) {
+ // Don't do a full validation, just validate the function signatures.
+ result = ValidateFuncSignatures(lexer.get(), module, error_handler);
+ }
+ }
+ return result;
+}
+
+wabt::Result SpecJSONParser::ReadInvalidModule(const char* module_filename,
+ Environment* env,
+ ModuleType module_type,
+ const char* desc) {
+ std::string header =
+ StringPrintf(PRIstringview ":%d: %s passed",
+ WABT_PRINTF_STRING_VIEW_ARG(source_filename_),
+ command_line_number_, desc);
+
+ switch (module_type) {
+ case ModuleType::Text: {
+ ErrorHandlerFile error_handler(Location::Type::Text, stdout, header,
+ ErrorHandlerFile::PrintHeader::Once);
+ return ReadInvalidTextModule(module_filename, env, &error_handler);
+ }
+
+ case ModuleType::Binary: {
+ DefinedModule* module;
+ ErrorHandlerFile error_handler(Location::Type::Binary, stdout, header,
+ ErrorHandlerFile::PrintHeader::Once);
+ return ReadModule(module_filename, env, &error_handler, &module);
+ }
+ }
+
+ WABT_UNREACHABLE;
+}
+
+wabt::Result SpecJSONParser::OnAssertMalformedCommand(string_view filename,
+ string_view text,
+ ModuleType module_type) {
+ Environment env;
+ InitEnvironment(&env);
+
+ total_++;
+ std::string path = CreateModulePath(filename);
+ wabt::Result result =
+ ReadInvalidModule(path.c_str(), &env, module_type, "assert_malformed");
+ if (Failed(result)) {
+ passed_++;
+ result = wabt::Result::Ok;
+ } else {
+ PrintCommandError("expected module to be malformed: \"%s\"", path.c_str());
+ result = wabt::Result::Error;
+ }
+
+ return result;
+}
+
+wabt::Result SpecJSONParser::OnRegisterCommand(string_view name,
+ string_view as) {
+ Index module_index;
+ if (!name.empty()) {
+ module_index = env_.FindModuleIndex(name);
+ } else {
+ module_index = env_.GetLastModuleIndex();
+ }
+
+ if (module_index == kInvalidIndex) {
+ PrintCommandError("unknown module in register");
+ return wabt::Result::Error;
+ }
+
+ env_.EmplaceRegisteredModuleBinding(as.to_string(), Binding(module_index));
+ return wabt::Result::Ok;
+}
+
+wabt::Result SpecJSONParser::OnAssertUnlinkableCommand(string_view filename,
+ string_view text,
+ ModuleType module_type) {
+ total_++;
+ std::string path = CreateModulePath(filename);
+ Environment::MarkPoint mark = env_.Mark();
+ wabt::Result result =
+ ReadInvalidModule(path.c_str(), &env_, module_type, "assert_unlinkable");
+ env_.ResetToMarkPoint(mark);
+
+ if (Failed(result)) {
+ passed_++;
+ result = wabt::Result::Ok;
+ } else {
+ PrintCommandError("expected module to be unlinkable: \"%s\"", path.c_str());
+ result = wabt::Result::Error;
+ }
+
+ return result;
+}
+
+wabt::Result SpecJSONParser::OnAssertInvalidCommand(string_view filename,
+ string_view text,
+ ModuleType module_type) {
+ Environment env;
+ InitEnvironment(&env);
+
+ total_++;
+ std::string path = CreateModulePath(filename);
+ wabt::Result result =
+ ReadInvalidModule(path.c_str(), &env, module_type, "assert_invalid");
+ if (Failed(result)) {
+ passed_++;
+ result = wabt::Result::Ok;
+ } else {
+ PrintCommandError("expected module to be invalid: \"%s\"", path.c_str());
+ result = wabt::Result::Error;
+ }
+
+ return result;
+}
+
+wabt::Result SpecJSONParser::OnAssertUninstantiableCommand(
+ string_view filename,
+ string_view text,
+ ModuleType module_type) {
+ ErrorHandlerFile error_handler(Location::Type::Binary);
+ total_++;
+ std::string path = CreateModulePath(filename);
+ DefinedModule* module;
+ Environment::MarkPoint mark = env_.Mark();
+ wabt::Result result =
+ ReadModule(path.c_str(), &env_, &error_handler, &module);
+
+ if (Succeeded(result)) {
+ interpreter::Result iresult = RunStartFunction(&thread_, module);
+ if (iresult == interpreter::Result::Ok) {
+ PrintCommandError("expected error running start function: \"%s\"",
+ path.c_str());
+ result = wabt::Result::Error;
+ } else {
+ passed_++;
+ result = wabt::Result::Ok;
+ }
+ } else {
+ PrintCommandError("error reading module: \"%s\"", path.c_str());
+ result = wabt::Result::Error;
+ }
+
+ env_.ResetToMarkPoint(mark);
+ return result;
+}
+
+static bool TypedValuesAreEqual(const TypedValue* tv1, const TypedValue* tv2) {
+ if (tv1->type != tv2->type)
+ return false;
+
+ switch (tv1->type) {
+ case Type::I32:
+ return tv1->value.i32 == tv2->value.i32;
+ case Type::F32:
+ return tv1->value.f32_bits == tv2->value.f32_bits;
+ case Type::I64:
+ return tv1->value.i64 == tv2->value.i64;
+ case Type::F64:
+ return tv1->value.f64_bits == tv2->value.f64_bits;
+ default:
+ WABT_UNREACHABLE;
+ }
+}
+
+wabt::Result SpecJSONParser::OnAssertReturnCommand(
+ ::Action* action,
+ const std::vector<TypedValue>& expected) {
+ std::vector<TypedValue> results;
+ interpreter::Result iresult;
+
+ total_++;
+ wabt::Result result =
+ RunAction(action, &iresult, &results, RunVerbosity::Quiet);
+
+ if (Succeeded(result)) {
+ if (iresult == interpreter::Result::Ok) {
+ if (results.size() == expected.size()) {
+ for (size_t i = 0; i < results.size(); ++i) {
+ const TypedValue* expected_tv = &expected[i];
+ const TypedValue* actual_tv = &results[i];
+ if (!TypedValuesAreEqual(expected_tv, actual_tv)) {
+ char expected_str[MAX_TYPED_VALUE_CHARS];
+ char actual_str[MAX_TYPED_VALUE_CHARS];
+ SPrintTypedValue(expected_str, sizeof(expected_str), expected_tv);
+ SPrintTypedValue(actual_str, sizeof(actual_str), actual_tv);
+ PrintCommandError("mismatch in result %" PRIzd
+ " of assert_return: expected %s, got %s",
+ i, expected_str, actual_str);
+ result = wabt::Result::Error;
+ }
+ }
+ } else {
+ PrintCommandError(
+ "result length mismatch in assert_return: expected %" PRIzd
+ ", got %" PRIzd,
+ expected.size(), results.size());
+ result = wabt::Result::Error;
+ }
+ } else {
+ PrintCommandError("unexpected trap: %s",
+ s_trap_strings[static_cast<size_t>(iresult)]);
+ result = wabt::Result::Error;
+ }
+ }
+
+ if (Succeeded(result))
+ passed_++;
+
+ return result;
+}
+
+wabt::Result SpecJSONParser::OnAssertReturnNanCommand(::Action* action,
+ bool canonical) {
+ std::vector<TypedValue> results;
+ interpreter::Result iresult;
+
+ total_++;
+ wabt::Result result =
+ RunAction(action, &iresult, &results, RunVerbosity::Quiet);
+ if (Succeeded(result)) {
+ if (iresult == interpreter::Result::Ok) {
+ if (results.size() != 1) {
+ PrintCommandError("expected one result, got %" PRIzd, results.size());
+ result = wabt::Result::Error;
+ }
+
+ const TypedValue& actual = results[0];
+ switch (actual.type) {
+ case Type::F32: {
+ bool is_nan = canonical ? IsCanonicalNan(actual.value.f32_bits)
+ : IsArithmeticNan(actual.value.f32_bits);
+ if (!is_nan) {
+ char actual_str[MAX_TYPED_VALUE_CHARS];
+ SPrintTypedValue(actual_str, sizeof(actual_str), &actual);
+ PrintCommandError("expected result to be nan, got %s", actual_str);
+ result = wabt::Result::Error;
+ }
+ break;
+ }
+
+ case Type::F64: {
+ bool is_nan = canonical ? IsCanonicalNan(actual.value.f64_bits)
+ : IsArithmeticNan(actual.value.f64_bits);
+ if (!is_nan) {
+ char actual_str[MAX_TYPED_VALUE_CHARS];
+ SPrintTypedValue(actual_str, sizeof(actual_str), &actual);
+ PrintCommandError("expected result to be nan, got %s", actual_str);
+ result = wabt::Result::Error;
+ }
+ break;
+ }
+
+ default:
+ PrintCommandError("expected result type to be f32 or f64, got %s",
+ GetTypeName(actual.type));
+ result = wabt::Result::Error;
+ break;
+ }
+ } else {
+ PrintCommandError("unexpected trap: %s",
+ s_trap_strings[static_cast<int>(iresult)]);
+ result = wabt::Result::Error;
+ }
+ }
+
+ if (Succeeded(result))
+ passed_++;
+
+ return wabt::Result::Ok;
+}
+
+wabt::Result SpecJSONParser::OnAssertTrapCommand(::Action* action,
+ string_view text) {
+ std::vector<TypedValue> results;
+ interpreter::Result iresult;
+
+ total_++;
+ wabt::Result result =
+ RunAction(action, &iresult, &results, RunVerbosity::Quiet);
+ if (Succeeded(result)) {
+ if (iresult != interpreter::Result::Ok) {
+ passed_++;
+ } else {
+ PrintCommandError("expected trap: \"" PRIstringview "\"",
+ WABT_PRINTF_STRING_VIEW_ARG(text));
+ result = wabt::Result::Error;
+ }
+ }
+
+ return result;
+}
+
+wabt::Result SpecJSONParser::OnAssertExhaustionCommand(::Action* action) {
+ std::vector<TypedValue> results;
+ interpreter::Result iresult;
+
+ total_++;
+ wabt::Result result =
+ RunAction(action, &iresult, &results, RunVerbosity::Quiet);
+ if (Succeeded(result)) {
+ if (iresult == interpreter::Result::TrapCallStackExhausted ||
+ iresult == interpreter::Result::TrapValueStackExhausted) {
+ passed_++;
+ } else {
+ PrintCommandError("expected call stack exhaustion");
+ result = wabt::Result::Error;
+ }
+ }
+
+ return result;
+}
+
+wabt::Result SpecJSONParser::ParseCommand() {
+ EXPECT("{");
+ EXPECT_KEY("type");
+ if (Match("\"module\"")) {
+ std::string name;
+ std::string filename;
+
+ EXPECT(",");
+ CHECK_RESULT(ParseLine());
+ EXPECT(",");
+ CHECK_RESULT(ParseOptNameStringValue(&name));
+ PARSE_KEY_STRING_VALUE("filename", &filename);
+ OnModuleCommand(filename, name);
+ } else if (Match("\"action\"")) {
+ ::Action action;
+
+ EXPECT(",");
+ CHECK_RESULT(ParseLine());
+ EXPECT(",");
+ CHECK_RESULT(ParseAction(&action));
+ OnActionCommand(&action);
+ } else if (Match("\"register\"")) {
+ std::string as;
+ std::string name;
+
+ EXPECT(",");
+ CHECK_RESULT(ParseLine());
+ EXPECT(",");
+ CHECK_RESULT(ParseOptNameStringValue(&name));
+ PARSE_KEY_STRING_VALUE("as", &as);
+ OnRegisterCommand(name, as);
+ } else if (Match("\"assert_malformed\"")) {
+ std::string filename;
+ std::string text;
+ ModuleType module_type;
+
+ EXPECT(",");
+ CHECK_RESULT(ParseLine());
+ EXPECT(",");
+ PARSE_KEY_STRING_VALUE("filename", &filename);
+ EXPECT(",");
+ PARSE_KEY_STRING_VALUE("text", &text);
+ EXPECT(",");
+ CHECK_RESULT(ParseModuleType(&module_type));
+ OnAssertMalformedCommand(filename, text, module_type);
+ } else if (Match("\"assert_invalid\"")) {
+ std::string filename;
+ std::string text;
+ ModuleType module_type;
+
+ EXPECT(",");
+ CHECK_RESULT(ParseLine());
+ EXPECT(",");
+ PARSE_KEY_STRING_VALUE("filename", &filename);
+ EXPECT(",");
+ PARSE_KEY_STRING_VALUE("text", &text);
+ EXPECT(",");
+ CHECK_RESULT(ParseModuleType(&module_type));
+ OnAssertInvalidCommand(filename, text, module_type);
+ } else if (Match("\"assert_unlinkable\"")) {
+ std::string filename;
+ std::string text;
+ ModuleType module_type;
+
+ EXPECT(",");
+ CHECK_RESULT(ParseLine());
+ EXPECT(",");
+ PARSE_KEY_STRING_VALUE("filename", &filename);
+ EXPECT(",");
+ PARSE_KEY_STRING_VALUE("text", &text);
+ EXPECT(",");
+ CHECK_RESULT(ParseModuleType(&module_type));
+ OnAssertUnlinkableCommand(filename, text, module_type);
+ } else if (Match("\"assert_uninstantiable\"")) {
+ std::string filename;
+ std::string text;
+ ModuleType module_type;
+
+ EXPECT(",");
+ CHECK_RESULT(ParseLine());
+ EXPECT(",");
+ PARSE_KEY_STRING_VALUE("filename", &filename);
+ EXPECT(",");
+ PARSE_KEY_STRING_VALUE("text", &text);
+ EXPECT(",");
+ CHECK_RESULT(ParseModuleType(&module_type));
+ OnAssertUninstantiableCommand(filename, text, module_type);
+ } else if (Match("\"assert_return\"")) {
+ ::Action action;
+ std::vector<TypedValue> expected;
+
+ EXPECT(",");
+ CHECK_RESULT(ParseLine());
+ EXPECT(",");
+ CHECK_RESULT(ParseAction(&action));
+ EXPECT(",");
+ EXPECT_KEY("expected");
+ CHECK_RESULT(ParseConstVector(&expected));
+ OnAssertReturnCommand(&action, expected);
+ } else if (Match("\"assert_return_canonical_nan\"")) {
+ ::Action action;
+ TypeVector expected;
+
+ EXPECT(",");
+ CHECK_RESULT(ParseLine());
+ EXPECT(",");
+ CHECK_RESULT(ParseAction(&action));
+ EXPECT(",");
+ /* Not needed for wabt-interp, but useful for other parsers. */
+ EXPECT_KEY("expected");
+ CHECK_RESULT(ParseTypeVector(&expected));
+ OnAssertReturnNanCommand(&action, true);
+ } else if (Match("\"assert_return_arithmetic_nan\"")) {
+ ::Action action;
+ TypeVector expected;
+
+ EXPECT(",");
+ CHECK_RESULT(ParseLine());
+ EXPECT(",");
+ CHECK_RESULT(ParseAction(&action));
+ EXPECT(",");
+ /* Not needed for wabt-interp, but useful for other parsers. */
+ EXPECT_KEY("expected");
+ CHECK_RESULT(ParseTypeVector(&expected));
+ OnAssertReturnNanCommand(&action, false);
+ } else if (Match("\"assert_trap\"")) {
+ ::Action action;
+ std::string text;
+
+ EXPECT(",");
+ CHECK_RESULT(ParseLine());
+ EXPECT(",");
+ CHECK_RESULT(ParseAction(&action));
+ EXPECT(",");
+ PARSE_KEY_STRING_VALUE("text", &text);
+ OnAssertTrapCommand(&action, text);
+ } else if (Match("\"assert_exhaustion\"")) {
+ ::Action action;
+ std::string text;
+
+ EXPECT(",");
+ CHECK_RESULT(ParseLine());
+ EXPECT(",");
+ CHECK_RESULT(ParseAction(&action));
+ OnAssertExhaustionCommand(&action);
+ } else {
+ PrintCommandError("unknown command type");
+ return wabt::Result::Error;
+ }
+ EXPECT("}");
+ return wabt::Result::Ok;
+}
+
+wabt::Result SpecJSONParser::ParseCommands() {
+ EXPECT("{");
+ PARSE_KEY_STRING_VALUE("source_filename", &source_filename_);
+ EXPECT(",");
+ EXPECT_KEY("commands");
+ EXPECT("[");
+ bool first = true;
+ while (!Match("]")) {
+ if (!first)
+ EXPECT(",");
+ CHECK_RESULT(ParseCommand());
+ first = false;
+ }
+ EXPECT("}");
+ return wabt::Result::Ok;
+}
+
+static wabt::Result ReadAndRunSpecJSON(const char* spec_json_filename) {
+ SpecJSONParser parser;
+ CHECK_RESULT(parser.ReadFile(spec_json_filename));
+ wabt::Result result = parser.ParseCommands();
+ printf("%d/%d tests passed.\n", parser.passed(), parser.total());
+ return result;
+}
+
+int ProgramMain(int argc, char** argv) {
+ InitStdio();
+ ParseOptions(argc, argv);
+
+ s_stdout_stream = FileStream::CreateStdout();
+
+ wabt::Result result;
+ result = ReadAndRunSpecJSON(s_infile);
+ return result != wabt::Result::Ok;
+}
+
+int main(int argc, char** argv) {
+ WABT_TRY
+ return ProgramMain(argc, argv);
+ WABT_CATCH_BAD_ALLOC_AND_EXIT
+}
diff --git a/src/tools/wasm-interp.cc b/src/tools/wasm-interp.cc
index 1c4cf958..00ec38ae 100644
--- a/src/tools/wasm-interp.cc
+++ b/src/tools/wasm-interp.cc
@@ -48,8 +48,8 @@ static int s_verbose;
static const char* s_infile;
static Thread::Options s_thread_options;
static bool s_trace;
-static bool s_spec;
static bool s_run_all_exports;
+static bool s_host_print;
static Features s_features;
static std::unique_ptr<FileStream> s_log_stream;
@@ -74,9 +74,6 @@ examples:
# parse test.wasm, run the exported functions and trace the output
$ wasm-interp test.wasm --run-all-exports --trace
- # parse test.json and run the spec tests
- $ wasm-interp test.json --spec
-
# parse test.wasm and run all its exported functions, setting the
# value stack size to 100 elements
$ wasm-interp test.wasm -V 100 --run-all-exports
@@ -104,42 +101,21 @@ static void ParseOptions(int argc, char** argv) {
s_thread_options.call_stack_size = atoi(argument.c_str());
});
parser.AddOption('t', "trace", "Trace execution", []() { s_trace = true; });
- parser.AddOption("spec", "Run spec tests (input file should be .json)",
- []() { s_spec = true; });
parser.AddOption(
"run-all-exports",
"Run all the exported functions, in order. Useful for testing",
[]() { s_run_all_exports = true; });
+ parser.AddOption("host-print",
+ "Include an importable function named \"host.print\" for "
+ "printing to stdout",
+ []() { s_host_print = true; });
parser.AddArgument("filename", OptionParser::ArgumentCount::One,
[](const char* argument) { s_infile = argument; });
parser.Parse(argc, argv);
-
- if (s_spec && s_run_all_exports)
- WABT_FATAL("--spec and --run-all-exports are incompatible.\n");
}
-enum class ModuleType {
- Text,
- Binary,
-};
-
-static string_view GetDirname(string_view path) {
- // Strip everything after and including the last slash (or backslash), e.g.:
- //
- // s = "foo/bar/baz", => "foo/bar"
- // s = "/usr/local/include/stdio.h", => "/usr/local/include"
- // s = "foo.bar", => ""
- // s = "some\windows\directory", => "some\windows"
- size_t last_slash = path.find_last_of('/');
- size_t last_backslash = path.find_last_of('\\');
- if (last_slash == string_view::npos)
- last_slash = 0;
- if (last_backslash == string_view::npos)
- last_backslash = 0;
-
- return path.substr(0, std::max(last_slash, last_backslash));
-}
+// TODO(binji): Share these helper functions w/ spectest-interp as well.
/* Not sure, but 100 chars is probably safe */
#define MAX_TYPED_VALUE_CHARS 100
@@ -250,37 +226,6 @@ static interpreter::Result RunExport(Thread* thread,
return RunFunction(thread, export_->index, args, out_results);
}
-static interpreter::Result RunExportByName(Thread* thread,
- interpreter::Module* module,
- string_view name,
- const std::vector<TypedValue>& args,
- std::vector<TypedValue>* out_results,
- RunVerbosity verbose) {
- interpreter::Export* export_ = module->GetExport(name);
- if (!export_)
- return interpreter::Result::UnknownExport;
- if (export_->kind != ExternalKind::Func)
- return interpreter::Result::ExportKindMismatch;
- return RunExport(thread, export_, args, out_results);
-}
-
-static interpreter::Result GetGlobalExportByName(
- Thread* thread,
- interpreter::Module* module,
- string_view name,
- std::vector<TypedValue>* out_results) {
- interpreter::Export* export_ = module->GetExport(name);
- if (!export_)
- return interpreter::Result::UnknownExport;
- if (export_->kind != ExternalKind::Global)
- return interpreter::Result::ExportKindMismatch;
-
- interpreter::Global* global = thread->env()->GetGlobal(export_->index);
- out_results->clear();
- out_results->push_back(global->typed_value);
- return interpreter::Result::Ok;
-}
-
static void RunAllExports(interpreter::Module* module,
Thread* thread,
RunVerbosity verbose) {
@@ -320,40 +265,19 @@ static wabt::Result ReadModule(const char* module_filename,
return result;
}
-static interpreter::Result DefaultHostCallback(
- const HostFunc* func,
- const interpreter::FuncSignature* sig,
- Index num_args,
- TypedValue* args,
- Index num_results,
- TypedValue* out_results,
- void* user_data) {
- memset(out_results, 0, sizeof(TypedValue) * num_results);
- for (Index i = 0; i < num_results; ++i)
- out_results[i].type = sig->result_types[i];
-
- std::vector<TypedValue> vec_args(args, args + num_args);
- std::vector<TypedValue> vec_results(out_results, out_results + num_results);
-
- printf("called host ");
- PrintCall(func->module_name, func->field_name, vec_args, vec_results,
- interpreter::Result::Ok);
- return interpreter::Result::Ok;
-}
-
#define PRIimport "\"" PRIstringview "." PRIstringview "\""
#define PRINTF_IMPORT_ARG(x) \
WABT_PRINTF_STRING_VIEW_ARG((x).module_name) \
, WABT_PRINTF_STRING_VIEW_ARG((x).field_name)
-class SpectestHostImportDelegate : public HostImportDelegate {
+class WasmInterpHostImportDelegate : public HostImportDelegate {
public:
wabt::Result ImportFunc(interpreter::FuncImport* import,
interpreter::Func* func,
interpreter::FuncSignature* func_sig,
const ErrorCallback& callback) override {
if (import->field_name == "print") {
- cast<HostFunc>(func)->callback = DefaultHostCallback;
+ cast<HostFunc>(func)->callback = PrintCallback;
return wabt::Result::Ok;
} else {
PrintError(callback, "unknown host function import " PRIimport,
@@ -365,74 +289,43 @@ class SpectestHostImportDelegate : public HostImportDelegate {
wabt::Result ImportTable(interpreter::TableImport* import,
interpreter::Table* table,
const ErrorCallback& callback) override {
- if (import->field_name == "table") {
- table->limits.has_max = true;
- table->limits.initial = 10;
- table->limits.max = 20;
- return wabt::Result::Ok;
- } else {
- PrintError(callback, "unknown host table import " PRIimport,
- PRINTF_IMPORT_ARG(*import));
- return wabt::Result::Error;
- }
+ return wabt::Result::Error;
}
wabt::Result ImportMemory(interpreter::MemoryImport* import,
interpreter::Memory* memory,
const ErrorCallback& callback) override {
- if (import->field_name == "memory") {
- memory->page_limits.has_max = true;
- memory->page_limits.initial = 1;
- memory->page_limits.max = 2;
- memory->data.resize(memory->page_limits.initial * WABT_MAX_PAGES);
- return wabt::Result::Ok;
- } else {
- PrintError(callback, "unknown host memory import " PRIimport,
- PRINTF_IMPORT_ARG(*import));
- return wabt::Result::Error;
- }
+ return wabt::Result::Error;
}
wabt::Result ImportGlobal(interpreter::GlobalImport* import,
interpreter::Global* global,
const ErrorCallback& callback) override {
- if (import->field_name == "global") {
- switch (global->typed_value.type) {
- case Type::I32:
- global->typed_value.value.i32 = 666;
- break;
-
- case Type::F32: {
- float value = 666.6f;
- memcpy(&global->typed_value.value.f32_bits, &value, sizeof(value));
- break;
- }
-
- case Type::I64:
- global->typed_value.value.i64 = 666;
- break;
-
- case Type::F64: {
- double value = 666.6;
- memcpy(&global->typed_value.value.f64_bits, &value, sizeof(value));
- break;
- }
-
- default:
- PrintError(callback, "bad type for host global import " PRIimport,
- PRINTF_IMPORT_ARG(*import));
- return wabt::Result::Error;
- }
-
- return wabt::Result::Ok;
- } else {
- PrintError(callback, "unknown host global import " PRIimport,
- PRINTF_IMPORT_ARG(*import));
- return wabt::Result::Error;
- }
+ return wabt::Result::Error;
}
private:
+ static interpreter::Result PrintCallback(
+ const HostFunc* func,
+ const interpreter::FuncSignature* sig,
+ Index num_args,
+ TypedValue* args,
+ Index num_results,
+ TypedValue* out_results,
+ void* user_data) {
+ memset(out_results, 0, sizeof(TypedValue) * num_results);
+ for (Index i = 0; i < num_results; ++i)
+ out_results[i].type = sig->result_types[i];
+
+ std::vector<TypedValue> vec_args(args, args + num_args);
+ std::vector<TypedValue> vec_results(out_results, out_results + num_results);
+
+ printf("called host ");
+ PrintCall(func->module_name, func->field_name, vec_args, vec_results,
+ interpreter::Result::Ok);
+ return interpreter::Result::Ok;
+ }
+
void PrintError(const ErrorCallback& callback, const char* format, ...) {
WABT_SNPRINTF_ALLOCA(buffer, length, format);
callback(buffer);
@@ -440,8 +333,10 @@ class SpectestHostImportDelegate : public HostImportDelegate {
};
static void InitEnvironment(Environment* env) {
- HostModule* host_module = env->AppendHostModule("spectest");
- host_module->import_delegate.reset(new SpectestHostImportDelegate());
+ if (s_host_print) {
+ HostModule* host_module = env->AppendHostModule("host");
+ host_module->import_delegate.reset(new WasmInterpHostImportDelegate());
+ }
}
static wabt::Result ReadAndRunModule(const char* module_filename) {
@@ -465,1064 +360,13 @@ static wabt::Result ReadAndRunModule(const char* module_filename) {
return result;
}
-enum class ActionType {
- Invoke,
- Get,
-};
-
-struct Action {
- ::ActionType type = ::ActionType::Invoke;
- std::string module_name;
- std::string field_name;
- std::vector<TypedValue> args;
-};
-
-// An extremely simple JSON parser that only knows how to parse the expected
-// format from wat2wasm.
-class SpecJSONParser {
- public:
- SpecJSONParser() : thread_(&env_, s_thread_options) {}
-
- wabt::Result ReadFile(const char* spec_json_filename);
- wabt::Result ParseCommands();
-
- int passed() const { return passed_; }
- int total() const { return total_; }
-
- private:
- void WABT_PRINTF_FORMAT(2, 3) PrintParseError(const char* format, ...);
- void WABT_PRINTF_FORMAT(2, 3) PrintCommandError(const char* format, ...);
-
- void PutbackChar();
- int ReadChar();
- void SkipWhitespace();
- bool Match(const char* s);
- wabt::Result Expect(const char* s);
- wabt::Result ExpectKey(const char* key);
- wabt::Result ParseUint32(uint32_t* out_int);
- wabt::Result ParseString(std::string* out_string);
- wabt::Result ParseKeyStringValue(const char* key, std::string* out_string);
- wabt::Result ParseOptNameStringValue(std::string* out_string);
- wabt::Result ParseLine();
- wabt::Result ParseTypeObject(Type* out_type);
- wabt::Result ParseTypeVector(TypeVector* out_types);
- wabt::Result ParseConst(TypedValue* out_value);
- wabt::Result ParseConstVector(std::vector<TypedValue>* out_values);
- wabt::Result ParseAction(::Action* out_action);
- wabt::Result ParseModuleType(ModuleType* out_type);
-
- std::string CreateModulePath(string_view filename);
-
- wabt::Result OnModuleCommand(string_view filename, string_view name);
- wabt::Result RunAction(::Action* action,
- interpreter::Result* out_iresult,
- std::vector<TypedValue>* out_results,
- RunVerbosity verbose);
- wabt::Result OnActionCommand(::Action* action);
- wabt::Result ReadInvalidTextModule(const char* module_filename,
- Environment* env,
- ErrorHandler* error_handler);
- wabt::Result ReadInvalidModule(const char* module_filename,
- Environment* env,
- ModuleType module_type,
- const char* desc);
- wabt::Result OnAssertMalformedCommand(string_view filename,
- string_view text,
- ModuleType module_type);
- wabt::Result OnRegisterCommand(string_view name, string_view as);
- wabt::Result OnAssertUnlinkableCommand(string_view filename,
- string_view text,
- ModuleType module_type);
- wabt::Result OnAssertInvalidCommand(string_view filename,
- string_view text,
- ModuleType module_type);
- wabt::Result OnAssertUninstantiableCommand(string_view filename,
- string_view text,
- ModuleType module_type);
- wabt::Result OnAssertReturnCommand(::Action* action,
- const std::vector<TypedValue>& expected);
- wabt::Result OnAssertReturnNanCommand(::Action* action, bool canonical);
- wabt::Result OnAssertTrapCommand(::Action* action, string_view text);
- wabt::Result OnAssertExhaustionCommand(::Action* action);
- wabt::Result ParseCommand();
-
- Environment env_;
- Thread thread_;
- DefinedModule* last_module_ = nullptr;
-
- // Parsing info.
- std::vector<uint8_t> json_data_;
- std::string source_filename_;
- size_t json_offset_ = 0;
- Location loc_;
- Location prev_loc_;
- bool has_prev_loc_ = false;
- uint32_t command_line_number_ = 0;
-
- // Test info.
- int passed_ = 0;
- int total_ = 0;
-};
-
-#define EXPECT(x) CHECK_RESULT(Expect(x))
-#define EXPECT_KEY(x) CHECK_RESULT(ExpectKey(x))
-#define PARSE_KEY_STRING_VALUE(key, value) \
- CHECK_RESULT(ParseKeyStringValue(key, value))
-
-wabt::Result SpecJSONParser::ReadFile(const char* spec_json_filename) {
- loc_.filename = spec_json_filename;
- loc_.line = 1;
- loc_.first_column = 1;
- InitEnvironment(&env_);
-
- return wabt::ReadFile(spec_json_filename, &json_data_);
-}
-
-void SpecJSONParser::PrintParseError(const char* format, ...) {
- WABT_SNPRINTF_ALLOCA(buffer, length, format);
- fprintf(stderr, "%s:%d:%d: %s\n", loc_.filename, loc_.line, loc_.first_column,
- buffer);
-}
-
-void SpecJSONParser::PrintCommandError(const char* format, ...) {
- WABT_SNPRINTF_ALLOCA(buffer, length, format);
- printf(PRIstringview ":%u: %s\n",
- WABT_PRINTF_STRING_VIEW_ARG(source_filename_), command_line_number_,
- buffer);
-}
-
-void SpecJSONParser::PutbackChar() {
- assert(has_prev_loc_);
- json_offset_--;
- loc_ = prev_loc_;
- has_prev_loc_ = false;
-}
-
-int SpecJSONParser::ReadChar() {
- if (json_offset_ >= json_data_.size())
- return -1;
- prev_loc_ = loc_;
- char c = json_data_[json_offset_++];
- if (c == '\n') {
- loc_.line++;
- loc_.first_column = 1;
- } else {
- loc_.first_column++;
- }
- has_prev_loc_ = true;
- return c;
-}
-
-void SpecJSONParser::SkipWhitespace() {
- while (1) {
- switch (ReadChar()) {
- case -1:
- return;
-
- case ' ':
- case '\t':
- case '\n':
- case '\r':
- break;
-
- default:
- PutbackChar();
- return;
- }
- }
-}
-
-bool SpecJSONParser::Match(const char* s) {
- SkipWhitespace();
- Location start_loc = loc_;
- size_t start_offset = json_offset_;
- while (*s && *s == ReadChar())
- s++;
-
- if (*s == 0) {
- return true;
- } else {
- json_offset_ = start_offset;
- loc_ = start_loc;
- return false;
- }
-}
-
-wabt::Result SpecJSONParser::Expect(const char* s) {
- if (Match(s)) {
- return wabt::Result::Ok;
- } else {
- PrintParseError("expected %s", s);
- return wabt::Result::Error;
- }
-}
-
-wabt::Result SpecJSONParser::ExpectKey(const char* key) {
- size_t keylen = strlen(key);
- size_t quoted_len = keylen + 2 + 1;
- char* quoted = static_cast<char*>(alloca(quoted_len));
- snprintf(quoted, quoted_len, "\"%s\"", key);
- EXPECT(quoted);
- EXPECT(":");
- return wabt::Result::Ok;
-}
-
-wabt::Result SpecJSONParser::ParseUint32(uint32_t* out_int) {
- uint32_t result = 0;
- SkipWhitespace();
- while (1) {
- int c = ReadChar();
- if (c >= '0' && c <= '9') {
- uint32_t last_result = result;
- result = result * 10 + static_cast<uint32_t>(c - '0');
- if (result < last_result) {
- PrintParseError("uint32 overflow");
- return wabt::Result::Error;
- }
- } else {
- PutbackChar();
- break;
- }
- }
- *out_int = result;
- return wabt::Result::Ok;
-}
-
-wabt::Result SpecJSONParser::ParseString(std::string* out_string) {
- out_string->clear();
-
- SkipWhitespace();
- if (ReadChar() != '"') {
- PrintParseError("expected string");
- return wabt::Result::Error;
- }
-
- while (1) {
- int c = ReadChar();
- if (c == '"') {
- break;
- } else if (c == '\\') {
- /* The only escape supported is \uxxxx. */
- c = ReadChar();
- if (c != 'u') {
- PrintParseError("expected escape: \\uxxxx");
- return wabt::Result::Error;
- }
- uint16_t code = 0;
- for (int i = 0; i < 4; ++i) {
- c = ReadChar();
- int cval;
- if (c >= '0' && c <= '9') {
- cval = c - '0';
- } else if (c >= 'a' && c <= 'f') {
- cval = c - 'a' + 10;
- } else if (c >= 'A' && c <= 'F') {
- cval = c - 'A' + 10;
- } else {
- PrintParseError("expected hex char");
- return wabt::Result::Error;
- }
- code = (code << 4) + cval;
- }
-
- if (code < 256) {
- *out_string += code;
- } else {
- PrintParseError("only escape codes < 256 allowed, got %u\n", code);
- }
- } else {
- *out_string += c;
- }
- }
- return wabt::Result::Ok;
-}
-
-wabt::Result SpecJSONParser::ParseKeyStringValue(const char* key,
- std::string* out_string) {
- out_string->clear();
- EXPECT_KEY(key);
- return ParseString(out_string);
-}
-
-wabt::Result SpecJSONParser::ParseOptNameStringValue(std::string* out_string) {
- out_string->clear();
- if (Match("\"name\"")) {
- EXPECT(":");
- CHECK_RESULT(ParseString(out_string));
- EXPECT(",");
- }
- return wabt::Result::Ok;
-}
-
-wabt::Result SpecJSONParser::ParseLine() {
- EXPECT_KEY("line");
- CHECK_RESULT(ParseUint32(&command_line_number_));
- return wabt::Result::Ok;
-}
-
-wabt::Result SpecJSONParser::ParseTypeObject(Type* out_type) {
- std::string type_str;
- EXPECT("{");
- PARSE_KEY_STRING_VALUE("type", &type_str);
- EXPECT("}");
-
- if (type_str == "i32") {
- *out_type = Type::I32;
- return wabt::Result::Ok;
- } else if (type_str == "f32") {
- *out_type = Type::F32;
- return wabt::Result::Ok;
- } else if (type_str == "i64") {
- *out_type = Type::I64;
- return wabt::Result::Ok;
- } else if (type_str == "f64") {
- *out_type = Type::F64;
- return wabt::Result::Ok;
- } else {
- PrintParseError("unknown type: \"" PRIstringview "\"",
- WABT_PRINTF_STRING_VIEW_ARG(type_str));
- return wabt::Result::Error;
- }
-}
-
-wabt::Result SpecJSONParser::ParseTypeVector(TypeVector* out_types) {
- out_types->clear();
- EXPECT("[");
- bool first = true;
- while (!Match("]")) {
- if (!first)
- EXPECT(",");
- Type type;
- CHECK_RESULT(ParseTypeObject(&type));
- first = false;
- out_types->push_back(type);
- }
- return wabt::Result::Ok;
-}
-
-wabt::Result SpecJSONParser::ParseConst(TypedValue* out_value) {
- std::string type_str;
- std::string value_str;
- EXPECT("{");
- PARSE_KEY_STRING_VALUE("type", &type_str);
- EXPECT(",");
- PARSE_KEY_STRING_VALUE("value", &value_str);
- EXPECT("}");
-
- const char* value_start = value_str.data();
- const char* value_end = value_str.data() + value_str.size();
-
- if (type_str == "i32") {
- uint32_t value;
- CHECK_RESULT(
- ParseInt32(value_start, value_end, &value, ParseIntType::UnsignedOnly));
- out_value->type = Type::I32;
- out_value->value.i32 = value;
- return wabt::Result::Ok;
- } else if (type_str == "f32") {
- uint32_t value_bits;
- CHECK_RESULT(ParseInt32(value_start, value_end, &value_bits,
- ParseIntType::UnsignedOnly));
- out_value->type = Type::F32;
- out_value->value.f32_bits = value_bits;
- return wabt::Result::Ok;
- } else if (type_str == "i64") {
- uint64_t value;
- CHECK_RESULT(
- ParseInt64(value_start, value_end, &value, ParseIntType::UnsignedOnly));
- out_value->type = Type::I64;
- out_value->value.i64 = value;
- return wabt::Result::Ok;
- } else if (type_str == "f64") {
- uint64_t value_bits;
- CHECK_RESULT(ParseInt64(value_start, value_end, &value_bits,
- ParseIntType::UnsignedOnly));
- out_value->type = Type::F64;
- out_value->value.f64_bits = value_bits;
- return wabt::Result::Ok;
- } else {
- PrintParseError("unknown type: \"" PRIstringview "\"",
- WABT_PRINTF_STRING_VIEW_ARG(type_str));
- return wabt::Result::Error;
- }
-}
-
-wabt::Result SpecJSONParser::ParseConstVector(
- std::vector<TypedValue>* out_values) {
- out_values->clear();
- EXPECT("[");
- bool first = true;
- while (!Match("]")) {
- if (!first)
- EXPECT(",");
- TypedValue value;
- CHECK_RESULT(ParseConst(&value));
- out_values->push_back(value);
- first = false;
- }
- return wabt::Result::Ok;
-}
-
-wabt::Result SpecJSONParser::ParseAction(::Action* out_action) {
- EXPECT_KEY("action");
- EXPECT("{");
- EXPECT_KEY("type");
- if (Match("\"invoke\"")) {
- out_action->type = ::ActionType::Invoke;
- } else {
- EXPECT("\"get\"");
- out_action->type = ::ActionType::Get;
- }
- EXPECT(",");
- if (Match("\"module\"")) {
- EXPECT(":");
- CHECK_RESULT(ParseString(&out_action->module_name));
- EXPECT(",");
- }
- PARSE_KEY_STRING_VALUE("field", &out_action->field_name);
- if (out_action->type == ::ActionType::Invoke) {
- EXPECT(",");
- EXPECT_KEY("args");
- CHECK_RESULT(ParseConstVector(&out_action->args));
- }
- EXPECT("}");
- return wabt::Result::Ok;
-}
-
-wabt::Result SpecJSONParser::ParseModuleType(ModuleType* out_type) {
- std::string module_type_str;
-
- PARSE_KEY_STRING_VALUE("module_type", &module_type_str);
- if (module_type_str == "text") {
- *out_type = ModuleType::Text;
- return wabt::Result::Ok;
- } else if (module_type_str == "binary") {
- *out_type = ModuleType::Binary;
- return wabt::Result::Ok;
- } else {
- PrintParseError("unknown module type: \"" PRIstringview "\"",
- WABT_PRINTF_STRING_VIEW_ARG(module_type_str));
- return wabt::Result::Error;
- }
-}
-
-std::string SpecJSONParser::CreateModulePath(string_view filename) {
- const char* spec_json_filename = loc_.filename;
- string_view dirname = GetDirname(spec_json_filename);
- std::string path;
-
- if (dirname.size() == 0) {
- path = filename.to_string();
- } else {
- path = dirname.to_string();
- path += '/';
- path += filename.to_string();
- }
-
- ConvertBackslashToSlash(&path);
- return path;
-}
-
-wabt::Result SpecJSONParser::OnModuleCommand(string_view filename,
- string_view name) {
- std::string path = CreateModulePath(filename);
- Environment::MarkPoint mark = env_.Mark();
- ErrorHandlerFile error_handler(Location::Type::Binary);
- wabt::Result result =
- ReadModule(path.c_str(), &env_, &error_handler, &last_module_);
-
- if (Failed(result)) {
- env_.ResetToMarkPoint(mark);
- PrintCommandError("error reading module: \"%s\"", path.c_str());
- return wabt::Result::Error;
- }
-
- interpreter::Result iresult = RunStartFunction(&thread_, last_module_);
- if (iresult != interpreter::Result::Ok) {
- env_.ResetToMarkPoint(mark);
- PrintInterpreterResult("error running start function", iresult);
- return wabt::Result::Error;
- }
-
- if (!name.empty()) {
- last_module_->name = name.to_string();
- env_.EmplaceModuleBinding(name.to_string(),
- Binding(env_.GetModuleCount() - 1));
- }
- return wabt::Result::Ok;
-}
-
-wabt::Result SpecJSONParser::RunAction(::Action* action,
- interpreter::Result* out_iresult,
- std::vector<TypedValue>* out_results,
- RunVerbosity verbose) {
- out_results->clear();
-
- interpreter::Module* module;
- if (!action->module_name.empty()) {
- module = env_.FindModule(action->module_name);
- } else {
- module = env_.GetLastModule();
- }
- assert(module);
-
- switch (action->type) {
- case ::ActionType::Invoke:
- *out_iresult = RunExportByName(&thread_, module, action->field_name,
- action->args, out_results, verbose);
- if (verbose == RunVerbosity::Verbose) {
- PrintCall(string_view(), action->field_name, action->args, *out_results,
- *out_iresult);
- }
- return wabt::Result::Ok;
-
- case ::ActionType::Get: {
- *out_iresult = GetGlobalExportByName(&thread_, module, action->field_name,
- out_results);
- return wabt::Result::Ok;
- }
-
- default:
- PrintCommandError("invalid action type %d",
- static_cast<int>(action->type));
- return wabt::Result::Error;
- }
-}
-
-wabt::Result SpecJSONParser::OnActionCommand(::Action* action) {
- std::vector<TypedValue> results;
- interpreter::Result iresult;
-
- total_++;
- wabt::Result result =
- RunAction(action, &iresult, &results, RunVerbosity::Verbose);
- if (Succeeded(result)) {
- if (iresult == interpreter::Result::Ok) {
- passed_++;
- } else {
- PrintCommandError("unexpected trap: %s",
- s_trap_strings[static_cast<size_t>(iresult)]);
- result = wabt::Result::Error;
- }
- }
-
- return result;
-}
-
-wabt::Result SpecJSONParser::ReadInvalidTextModule(
- const char* module_filename,
- Environment* env,
- ErrorHandler* error_handler) {
- std::unique_ptr<WastLexer> lexer =
- WastLexer::CreateFileLexer(module_filename);
- std::unique_ptr<Script> script;
- wabt::Result result = ParseWastScript(lexer.get(), &script, error_handler);
- if (Succeeded(result)) {
- wabt::Module* module = script->GetFirstModule();
- result = ResolveNamesModule(lexer.get(), module, error_handler);
- if (Succeeded(result)) {
- // Don't do a full validation, just validate the function signatures.
- result = ValidateFuncSignatures(lexer.get(), module, error_handler);
- }
- }
- return result;
-}
-
-wabt::Result SpecJSONParser::ReadInvalidModule(const char* module_filename,
- Environment* env,
- ModuleType module_type,
- const char* desc) {
- std::string header =
- StringPrintf(PRIstringview ":%d: %s passed",
- WABT_PRINTF_STRING_VIEW_ARG(source_filename_),
- command_line_number_, desc);
-
- switch (module_type) {
- case ModuleType::Text: {
- ErrorHandlerFile error_handler(Location::Type::Text, stdout, header,
- ErrorHandlerFile::PrintHeader::Once);
- return ReadInvalidTextModule(module_filename, env, &error_handler);
- }
-
- case ModuleType::Binary: {
- DefinedModule* module;
- ErrorHandlerFile error_handler(Location::Type::Binary, stdout, header,
- ErrorHandlerFile::PrintHeader::Once);
- return ReadModule(module_filename, env, &error_handler, &module);
- }
- }
-
- WABT_UNREACHABLE;
-}
-
-wabt::Result SpecJSONParser::OnAssertMalformedCommand(string_view filename,
- string_view text,
- ModuleType module_type) {
- Environment env;
- InitEnvironment(&env);
-
- total_++;
- std::string path = CreateModulePath(filename);
- wabt::Result result =
- ReadInvalidModule(path.c_str(), &env, module_type, "assert_malformed");
- if (Failed(result)) {
- passed_++;
- result = wabt::Result::Ok;
- } else {
- PrintCommandError("expected module to be malformed: \"%s\"", path.c_str());
- result = wabt::Result::Error;
- }
-
- return result;
-}
-
-wabt::Result SpecJSONParser::OnRegisterCommand(string_view name,
- string_view as) {
- Index module_index;
- if (!name.empty()) {
- module_index = env_.FindModuleIndex(name);
- } else {
- module_index = env_.GetLastModuleIndex();
- }
-
- if (module_index == kInvalidIndex) {
- PrintCommandError("unknown module in register");
- return wabt::Result::Error;
- }
-
- env_.EmplaceRegisteredModuleBinding(as.to_string(), Binding(module_index));
- return wabt::Result::Ok;
-}
-
-wabt::Result SpecJSONParser::OnAssertUnlinkableCommand(string_view filename,
- string_view text,
- ModuleType module_type) {
- total_++;
- std::string path = CreateModulePath(filename);
- Environment::MarkPoint mark = env_.Mark();
- wabt::Result result =
- ReadInvalidModule(path.c_str(), &env_, module_type, "assert_unlinkable");
- env_.ResetToMarkPoint(mark);
-
- if (Failed(result)) {
- passed_++;
- result = wabt::Result::Ok;
- } else {
- PrintCommandError("expected module to be unlinkable: \"%s\"", path.c_str());
- result = wabt::Result::Error;
- }
-
- return result;
-}
-
-wabt::Result SpecJSONParser::OnAssertInvalidCommand(string_view filename,
- string_view text,
- ModuleType module_type) {
- Environment env;
- InitEnvironment(&env);
-
- total_++;
- std::string path = CreateModulePath(filename);
- wabt::Result result =
- ReadInvalidModule(path.c_str(), &env, module_type, "assert_invalid");
- if (Failed(result)) {
- passed_++;
- result = wabt::Result::Ok;
- } else {
- PrintCommandError("expected module to be invalid: \"%s\"", path.c_str());
- result = wabt::Result::Error;
- }
-
- return result;
-}
-
-wabt::Result SpecJSONParser::OnAssertUninstantiableCommand(
- string_view filename,
- string_view text,
- ModuleType module_type) {
- ErrorHandlerFile error_handler(Location::Type::Binary);
- total_++;
- std::string path = CreateModulePath(filename);
- DefinedModule* module;
- Environment::MarkPoint mark = env_.Mark();
- wabt::Result result =
- ReadModule(path.c_str(), &env_, &error_handler, &module);
-
- if (Succeeded(result)) {
- interpreter::Result iresult = RunStartFunction(&thread_, module);
- if (iresult == interpreter::Result::Ok) {
- PrintCommandError("expected error running start function: \"%s\"",
- path.c_str());
- result = wabt::Result::Error;
- } else {
- passed_++;
- result = wabt::Result::Ok;
- }
- } else {
- PrintCommandError("error reading module: \"%s\"", path.c_str());
- result = wabt::Result::Error;
- }
-
- env_.ResetToMarkPoint(mark);
- return result;
-}
-
-static bool TypedValuesAreEqual(const TypedValue* tv1, const TypedValue* tv2) {
- if (tv1->type != tv2->type)
- return false;
-
- switch (tv1->type) {
- case Type::I32:
- return tv1->value.i32 == tv2->value.i32;
- case Type::F32:
- return tv1->value.f32_bits == tv2->value.f32_bits;
- case Type::I64:
- return tv1->value.i64 == tv2->value.i64;
- case Type::F64:
- return tv1->value.f64_bits == tv2->value.f64_bits;
- default:
- WABT_UNREACHABLE;
- }
-}
-
-wabt::Result SpecJSONParser::OnAssertReturnCommand(
- ::Action* action,
- const std::vector<TypedValue>& expected) {
- std::vector<TypedValue> results;
- interpreter::Result iresult;
-
- total_++;
- wabt::Result result =
- RunAction(action, &iresult, &results, RunVerbosity::Quiet);
-
- if (Succeeded(result)) {
- if (iresult == interpreter::Result::Ok) {
- if (results.size() == expected.size()) {
- for (size_t i = 0; i < results.size(); ++i) {
- const TypedValue* expected_tv = &expected[i];
- const TypedValue* actual_tv = &results[i];
- if (!TypedValuesAreEqual(expected_tv, actual_tv)) {
- char expected_str[MAX_TYPED_VALUE_CHARS];
- char actual_str[MAX_TYPED_VALUE_CHARS];
- SPrintTypedValue(expected_str, sizeof(expected_str), expected_tv);
- SPrintTypedValue(actual_str, sizeof(actual_str), actual_tv);
- PrintCommandError("mismatch in result %" PRIzd
- " of assert_return: expected %s, got %s",
- i, expected_str, actual_str);
- result = wabt::Result::Error;
- }
- }
- } else {
- PrintCommandError(
- "result length mismatch in assert_return: expected %" PRIzd
- ", got %" PRIzd,
- expected.size(), results.size());
- result = wabt::Result::Error;
- }
- } else {
- PrintCommandError("unexpected trap: %s",
- s_trap_strings[static_cast<size_t>(iresult)]);
- result = wabt::Result::Error;
- }
- }
-
- if (Succeeded(result))
- passed_++;
-
- return result;
-}
-
-wabt::Result SpecJSONParser::OnAssertReturnNanCommand(::Action* action,
- bool canonical) {
- std::vector<TypedValue> results;
- interpreter::Result iresult;
-
- total_++;
- wabt::Result result =
- RunAction(action, &iresult, &results, RunVerbosity::Quiet);
- if (Succeeded(result)) {
- if (iresult == interpreter::Result::Ok) {
- if (results.size() != 1) {
- PrintCommandError("expected one result, got %" PRIzd, results.size());
- result = wabt::Result::Error;
- }
-
- const TypedValue& actual = results[0];
- switch (actual.type) {
- case Type::F32: {
- bool is_nan = canonical ? IsCanonicalNan(actual.value.f32_bits)
- : IsArithmeticNan(actual.value.f32_bits);
- if (!is_nan) {
- char actual_str[MAX_TYPED_VALUE_CHARS];
- SPrintTypedValue(actual_str, sizeof(actual_str), &actual);
- PrintCommandError("expected result to be nan, got %s", actual_str);
- result = wabt::Result::Error;
- }
- break;
- }
-
- case Type::F64: {
- bool is_nan = canonical ? IsCanonicalNan(actual.value.f64_bits)
- : IsArithmeticNan(actual.value.f64_bits);
- if (!is_nan) {
- char actual_str[MAX_TYPED_VALUE_CHARS];
- SPrintTypedValue(actual_str, sizeof(actual_str), &actual);
- PrintCommandError("expected result to be nan, got %s", actual_str);
- result = wabt::Result::Error;
- }
- break;
- }
-
- default:
- PrintCommandError("expected result type to be f32 or f64, got %s",
- GetTypeName(actual.type));
- result = wabt::Result::Error;
- break;
- }
- } else {
- PrintCommandError("unexpected trap: %s",
- s_trap_strings[static_cast<int>(iresult)]);
- result = wabt::Result::Error;
- }
- }
-
- if (Succeeded(result))
- passed_++;
-
- return wabt::Result::Ok;
-}
-
-wabt::Result SpecJSONParser::OnAssertTrapCommand(::Action* action,
- string_view text) {
- std::vector<TypedValue> results;
- interpreter::Result iresult;
-
- total_++;
- wabt::Result result =
- RunAction(action, &iresult, &results, RunVerbosity::Quiet);
- if (Succeeded(result)) {
- if (iresult != interpreter::Result::Ok) {
- passed_++;
- } else {
- PrintCommandError("expected trap: \"" PRIstringview "\"",
- WABT_PRINTF_STRING_VIEW_ARG(text));
- result = wabt::Result::Error;
- }
- }
-
- return result;
-}
-
-wabt::Result SpecJSONParser::OnAssertExhaustionCommand(::Action* action) {
- std::vector<TypedValue> results;
- interpreter::Result iresult;
-
- total_++;
- wabt::Result result =
- RunAction(action, &iresult, &results, RunVerbosity::Quiet);
- if (Succeeded(result)) {
- if (iresult == interpreter::Result::TrapCallStackExhausted ||
- iresult == interpreter::Result::TrapValueStackExhausted) {
- passed_++;
- } else {
- PrintCommandError("expected call stack exhaustion");
- result = wabt::Result::Error;
- }
- }
-
- return result;
-}
-
-wabt::Result SpecJSONParser::ParseCommand() {
- EXPECT("{");
- EXPECT_KEY("type");
- if (Match("\"module\"")) {
- std::string name;
- std::string filename;
-
- EXPECT(",");
- CHECK_RESULT(ParseLine());
- EXPECT(",");
- CHECK_RESULT(ParseOptNameStringValue(&name));
- PARSE_KEY_STRING_VALUE("filename", &filename);
- OnModuleCommand(filename, name);
- } else if (Match("\"action\"")) {
- ::Action action;
-
- EXPECT(",");
- CHECK_RESULT(ParseLine());
- EXPECT(",");
- CHECK_RESULT(ParseAction(&action));
- OnActionCommand(&action);
- } else if (Match("\"register\"")) {
- std::string as;
- std::string name;
-
- EXPECT(",");
- CHECK_RESULT(ParseLine());
- EXPECT(",");
- CHECK_RESULT(ParseOptNameStringValue(&name));
- PARSE_KEY_STRING_VALUE("as", &as);
- OnRegisterCommand(name, as);
- } else if (Match("\"assert_malformed\"")) {
- std::string filename;
- std::string text;
- ModuleType module_type;
-
- EXPECT(",");
- CHECK_RESULT(ParseLine());
- EXPECT(",");
- PARSE_KEY_STRING_VALUE("filename", &filename);
- EXPECT(",");
- PARSE_KEY_STRING_VALUE("text", &text);
- EXPECT(",");
- CHECK_RESULT(ParseModuleType(&module_type));
- OnAssertMalformedCommand(filename, text, module_type);
- } else if (Match("\"assert_invalid\"")) {
- std::string filename;
- std::string text;
- ModuleType module_type;
-
- EXPECT(",");
- CHECK_RESULT(ParseLine());
- EXPECT(",");
- PARSE_KEY_STRING_VALUE("filename", &filename);
- EXPECT(",");
- PARSE_KEY_STRING_VALUE("text", &text);
- EXPECT(",");
- CHECK_RESULT(ParseModuleType(&module_type));
- OnAssertInvalidCommand(filename, text, module_type);
- } else if (Match("\"assert_unlinkable\"")) {
- std::string filename;
- std::string text;
- ModuleType module_type;
-
- EXPECT(",");
- CHECK_RESULT(ParseLine());
- EXPECT(",");
- PARSE_KEY_STRING_VALUE("filename", &filename);
- EXPECT(",");
- PARSE_KEY_STRING_VALUE("text", &text);
- EXPECT(",");
- CHECK_RESULT(ParseModuleType(&module_type));
- OnAssertUnlinkableCommand(filename, text, module_type);
- } else if (Match("\"assert_uninstantiable\"")) {
- std::string filename;
- std::string text;
- ModuleType module_type;
-
- EXPECT(",");
- CHECK_RESULT(ParseLine());
- EXPECT(",");
- PARSE_KEY_STRING_VALUE("filename", &filename);
- EXPECT(",");
- PARSE_KEY_STRING_VALUE("text", &text);
- EXPECT(",");
- CHECK_RESULT(ParseModuleType(&module_type));
- OnAssertUninstantiableCommand(filename, text, module_type);
- } else if (Match("\"assert_return\"")) {
- ::Action action;
- std::vector<TypedValue> expected;
-
- EXPECT(",");
- CHECK_RESULT(ParseLine());
- EXPECT(",");
- CHECK_RESULT(ParseAction(&action));
- EXPECT(",");
- EXPECT_KEY("expected");
- CHECK_RESULT(ParseConstVector(&expected));
- OnAssertReturnCommand(&action, expected);
- } else if (Match("\"assert_return_canonical_nan\"")) {
- ::Action action;
- TypeVector expected;
-
- EXPECT(",");
- CHECK_RESULT(ParseLine());
- EXPECT(",");
- CHECK_RESULT(ParseAction(&action));
- EXPECT(",");
- /* Not needed for wabt-interp, but useful for other parsers. */
- EXPECT_KEY("expected");
- CHECK_RESULT(ParseTypeVector(&expected));
- OnAssertReturnNanCommand(&action, true);
- } else if (Match("\"assert_return_arithmetic_nan\"")) {
- ::Action action;
- TypeVector expected;
-
- EXPECT(",");
- CHECK_RESULT(ParseLine());
- EXPECT(",");
- CHECK_RESULT(ParseAction(&action));
- EXPECT(",");
- /* Not needed for wabt-interp, but useful for other parsers. */
- EXPECT_KEY("expected");
- CHECK_RESULT(ParseTypeVector(&expected));
- OnAssertReturnNanCommand(&action, false);
- } else if (Match("\"assert_trap\"")) {
- ::Action action;
- std::string text;
-
- EXPECT(",");
- CHECK_RESULT(ParseLine());
- EXPECT(",");
- CHECK_RESULT(ParseAction(&action));
- EXPECT(",");
- PARSE_KEY_STRING_VALUE("text", &text);
- OnAssertTrapCommand(&action, text);
- } else if (Match("\"assert_exhaustion\"")) {
- ::Action action;
- std::string text;
-
- EXPECT(",");
- CHECK_RESULT(ParseLine());
- EXPECT(",");
- CHECK_RESULT(ParseAction(&action));
- OnAssertExhaustionCommand(&action);
- } else {
- PrintCommandError("unknown command type");
- return wabt::Result::Error;
- }
- EXPECT("}");
- return wabt::Result::Ok;
-}
-
-wabt::Result SpecJSONParser::ParseCommands() {
- EXPECT("{");
- PARSE_KEY_STRING_VALUE("source_filename", &source_filename_);
- EXPECT(",");
- EXPECT_KEY("commands");
- EXPECT("[");
- bool first = true;
- while (!Match("]")) {
- if (!first)
- EXPECT(",");
- CHECK_RESULT(ParseCommand());
- first = false;
- }
- EXPECT("}");
- return wabt::Result::Ok;
-}
-
-static wabt::Result ReadAndRunSpecJSON(const char* spec_json_filename) {
- SpecJSONParser parser;
- CHECK_RESULT(parser.ReadFile(spec_json_filename));
- wabt::Result result = parser.ParseCommands();
- printf("%d/%d tests passed.\n", parser.passed(), parser.total());
- return result;
-}
-
int ProgramMain(int argc, char** argv) {
InitStdio();
ParseOptions(argc, argv);
s_stdout_stream = FileStream::CreateStdout();
- wabt::Result result;
- if (s_spec) {
- result = ReadAndRunSpecJSON(s_infile);
- } else {
- result = ReadAndRunModule(s_infile);
- }
+ wabt::Result result = ReadAndRunModule(s_infile);
return result != wabt::Result::Ok;
}
diff --git a/test/find_exe.py b/test/find_exe.py
index c0b8a95c..e75379a9 100644
--- a/test/find_exe.py
+++ b/test/find_exe.py
@@ -25,7 +25,7 @@ SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__))
REPO_ROOT_DIR = os.path.dirname(SCRIPT_DIR)
EXECUTABLES = [
'wat2wasm', 'wast2json', 'wasm2wat', 'wasm-objdump', 'wasm-interp',
- 'wasm-opcodecnt', 'wat-desugar', 'wasm-link'
+ 'wasm-opcodecnt', 'wat-desugar', 'wasm-link', 'spectest-interp',
]
@@ -88,6 +88,10 @@ def GetWasmInterpExecutable(override=None):
return FindExecutable('wasm-interp', override)
+def GetSpectestInterpExecutable(override=None):
+ return FindExecutable('spectest-interp', override)
+
+
def GetWasmOpcodeCntExecutable(override=None):
return FindExecutable('wasm-opcodecnt', override)
diff --git a/test/help/spectest-interp.txt b/test/help/spectest-interp.txt
new file mode 100644
index 00000000..5963057e
--- /dev/null
+++ b/test/help/spectest-interp.txt
@@ -0,0 +1,21 @@
+;;; EXE: %(spectest-interp)s
+;;; FLAGS: --help
+(;; STDOUT ;;;
+usage: spectest-interp [options] filename
+
+ read a Spectest JSON file, and run its tests in the interpreter.
+
+examples:
+ # parse test.json and run the spec tests
+ $ spectest-interp test.json
+
+options:
+ -v, --verbose Use multiple times for more info
+ -h, --help Print this help message
+ --enable-exceptions Experimental exception handling
+ --enable-saturating-float-to-int Saturating float-to-int operators
+ --enable-threads Threading support
+ -V, --value-stack-size=SIZE Size in elements of the value stack
+ -C, --call-stack-size=SIZE Size in elements of the call stack
+ -t, --trace Trace execution
+;;; STDOUT ;;)
diff --git a/test/help/wasm-interp.txt b/test/help/wasm-interp.txt
index 091e45fb..6e63ce23 100644
--- a/test/help/wasm-interp.txt
+++ b/test/help/wasm-interp.txt
@@ -16,9 +16,6 @@ examples:
# parse test.wasm, run the exported functions and trace the output
$ wasm-interp test.wasm --run-all-exports --trace
- # parse test.json and run the spec tests
- $ wasm-interp test.json --spec
-
# parse test.wasm and run all its exported functions, setting the
# value stack size to 100 elements
$ wasm-interp test.wasm -V 100 --run-all-exports
@@ -32,6 +29,6 @@ options:
-V, --value-stack-size=SIZE Size in elements of the value stack
-C, --call-stack-size=SIZE Size in elements of the call stack
-t, --trace Trace execution
- --spec Run spec tests (input file should be .json)
--run-all-exports Run all the exported functions, in order. Useful for testing
+ --host-print Include an importable function named "host.print" for printing to stdout
;;; STDOUT ;;)
diff --git a/test/interp/callimport-zero-args.txt b/test/interp/callimport-zero-args.txt
index 0419d7ed..5fb606cd 100644
--- a/test/interp/callimport-zero-args.txt
+++ b/test/interp/callimport-zero-args.txt
@@ -1,12 +1,13 @@
;;; TOOL: run-interp
+;;; FLAGS: --host-print
(module
- (import "spectest" "print" (func $imported (result i32)))
+ (import "host" "print" (func $imported (result i32)))
(func (export "f") (result i32)
i32.const 13
call $imported
i32.add))
(;; STDOUT ;;;
-called host spectest.print() => i32:0
+called host host.print() => i32:0
f() => i32:13
;;; STDOUT ;;)
diff --git a/test/interp/import.txt b/test/interp/import.txt
index 17bd8216..49433be8 100644
--- a/test/interp/import.txt
+++ b/test/interp/import.txt
@@ -1,7 +1,8 @@
;;; TOOL: run-interp
+;;; FLAGS: --host-print
(module
- (import "spectest" "print" (func $print_i32 (param i32)))
- (import "spectest" "print" (func $print_i32_i32 (param i32 i32)))
+ (import "host" "print" (func $print_i32 (param i32)))
+ (import "host" "print" (func $print_i32_i32 (param i32 i32)))
(func (export "test") (result i32)
i32.const 100
call $print_i32
@@ -12,7 +13,7 @@
return)
)
(;; STDOUT ;;;
-called host spectest.print(i32:100) =>
-called host spectest.print(i32:200, i32:300) =>
+called host host.print(i32:100) =>
+called host host.print(i32:200, i32:300) =>
test() => i32:1
;;; STDOUT ;;)
diff --git a/test/interp/logging-all-opcodes.txt b/test/interp/logging-all-opcodes.txt
index e431816d..bc173bfa 100644
--- a/test/interp/logging-all-opcodes.txt
+++ b/test/interp/logging-all-opcodes.txt
@@ -1,8 +1,8 @@
;;; TOOL: run-interp
-;;; FLAGS: -v --enable-threads --enable-saturating-float-to-int
+;;; FLAGS: -v --host-print --enable-threads --enable-saturating-float-to-int
(module
- (import "spectest" "print" (func $print (param i32)))
+ (import "host" "print" (func $print (param i32)))
(type $empty (func))
(func $empty)
@@ -301,4135 +301,4135 @@
0000013: 00 ; section size (guess)
0000014: 01 ; num imports
; import header 0
-0000015: 08 ; string length
-0000016: 7370 6563 7465 7374 spectest ; import module name
-000001e: 05 ; string length
-000001f: 7072 696e 74 print ; import field name
-0000024: 00 ; import kind
-0000025: 01 ; import signature index
-0000013: 12 ; FIXUP section size
+0000015: 04 ; string length
+0000016: 686f 7374 host ; import module name
+000001a: 05 ; string length
+000001b: 7072 696e 74 print ; import field name
+0000020: 00 ; import kind
+0000021: 01 ; import signature index
+0000013: 0e ; FIXUP section size
; section "Function" (3)
-0000026: 03 ; section code
-0000027: 00 ; section size (guess)
-0000028: f701 ; num functions
-000002a: 00 ; function 0 signature index
-000002b: 00 ; function 1 signature index
-000002c: 00 ; function 2 signature index
-000002d: 00 ; function 3 signature index
-000002e: 00 ; function 4 signature index
-000002f: 00 ; function 5 signature index
-0000030: 00 ; function 6 signature index
-0000031: 00 ; function 7 signature index
-0000032: 00 ; function 8 signature index
-0000033: 00 ; function 9 signature index
-0000034: 00 ; function 10 signature index
-0000035: 00 ; function 11 signature index
-0000036: 00 ; function 12 signature index
-0000037: 00 ; function 13 signature index
-0000038: 00 ; function 14 signature index
-0000039: 00 ; function 15 signature index
-000003a: 00 ; function 16 signature index
-000003b: 00 ; function 17 signature index
-000003c: 00 ; function 18 signature index
-000003d: 00 ; function 19 signature index
-000003e: 00 ; function 20 signature index
-000003f: 00 ; function 21 signature index
-0000040: 00 ; function 22 signature index
-0000041: 00 ; function 23 signature index
-0000042: 00 ; function 24 signature index
-0000043: 00 ; function 25 signature index
-0000044: 00 ; function 26 signature index
-0000045: 00 ; function 27 signature index
-0000046: 00 ; function 28 signature index
-0000047: 00 ; function 29 signature index
-0000048: 00 ; function 30 signature index
-0000049: 00 ; function 31 signature index
-000004a: 00 ; function 32 signature index
-000004b: 00 ; function 33 signature index
-000004c: 00 ; function 34 signature index
-000004d: 00 ; function 35 signature index
-000004e: 00 ; function 36 signature index
-000004f: 00 ; function 37 signature index
-0000050: 00 ; function 38 signature index
-0000051: 00 ; function 39 signature index
-0000052: 00 ; function 40 signature index
-0000053: 00 ; function 41 signature index
-0000054: 00 ; function 42 signature index
-0000055: 00 ; function 43 signature index
-0000056: 00 ; function 44 signature index
-0000057: 00 ; function 45 signature index
-0000058: 00 ; function 46 signature index
-0000059: 00 ; function 47 signature index
-000005a: 00 ; function 48 signature index
-000005b: 00 ; function 49 signature index
-000005c: 00 ; function 50 signature index
-000005d: 00 ; function 51 signature index
-000005e: 00 ; function 52 signature index
-000005f: 00 ; function 53 signature index
-0000060: 00 ; function 54 signature index
-0000061: 00 ; function 55 signature index
-0000062: 00 ; function 56 signature index
-0000063: 00 ; function 57 signature index
-0000064: 00 ; function 58 signature index
-0000065: 00 ; function 59 signature index
-0000066: 00 ; function 60 signature index
-0000067: 00 ; function 61 signature index
-0000068: 00 ; function 62 signature index
-0000069: 00 ; function 63 signature index
-000006a: 00 ; function 64 signature index
-000006b: 00 ; function 65 signature index
-000006c: 00 ; function 66 signature index
-000006d: 00 ; function 67 signature index
-000006e: 00 ; function 68 signature index
-000006f: 00 ; function 69 signature index
-0000070: 00 ; function 70 signature index
-0000071: 00 ; function 71 signature index
-0000072: 00 ; function 72 signature index
-0000073: 00 ; function 73 signature index
-0000074: 00 ; function 74 signature index
-0000075: 00 ; function 75 signature index
-0000076: 00 ; function 76 signature index
-0000077: 00 ; function 77 signature index
-0000078: 00 ; function 78 signature index
-0000079: 00 ; function 79 signature index
-000007a: 00 ; function 80 signature index
-000007b: 00 ; function 81 signature index
-000007c: 00 ; function 82 signature index
-000007d: 00 ; function 83 signature index
-000007e: 00 ; function 84 signature index
-000007f: 00 ; function 85 signature index
-0000080: 00 ; function 86 signature index
-0000081: 00 ; function 87 signature index
-0000082: 00 ; function 88 signature index
-0000083: 00 ; function 89 signature index
-0000084: 00 ; function 90 signature index
-0000085: 00 ; function 91 signature index
-0000086: 00 ; function 92 signature index
-0000087: 00 ; function 93 signature index
-0000088: 00 ; function 94 signature index
-0000089: 00 ; function 95 signature index
-000008a: 00 ; function 96 signature index
-000008b: 00 ; function 97 signature index
-000008c: 00 ; function 98 signature index
-000008d: 00 ; function 99 signature index
-000008e: 00 ; function 100 signature index
-000008f: 00 ; function 101 signature index
-0000090: 00 ; function 102 signature index
-0000091: 00 ; function 103 signature index
-0000092: 00 ; function 104 signature index
-0000093: 00 ; function 105 signature index
-0000094: 00 ; function 106 signature index
-0000095: 00 ; function 107 signature index
-0000096: 00 ; function 108 signature index
-0000097: 00 ; function 109 signature index
-0000098: 00 ; function 110 signature index
-0000099: 00 ; function 111 signature index
-000009a: 00 ; function 112 signature index
-000009b: 00 ; function 113 signature index
-000009c: 00 ; function 114 signature index
-000009d: 00 ; function 115 signature index
-000009e: 00 ; function 116 signature index
-000009f: 00 ; function 117 signature index
-00000a0: 00 ; function 118 signature index
-00000a1: 00 ; function 119 signature index
-00000a2: 00 ; function 120 signature index
-00000a3: 00 ; function 121 signature index
-00000a4: 00 ; function 122 signature index
-00000a5: 00 ; function 123 signature index
-00000a6: 00 ; function 124 signature index
-00000a7: 00 ; function 125 signature index
-00000a8: 00 ; function 126 signature index
-00000a9: 00 ; function 127 signature index
-00000aa: 00 ; function 128 signature index
-00000ab: 00 ; function 129 signature index
-00000ac: 00 ; function 130 signature index
-00000ad: 00 ; function 131 signature index
-00000ae: 00 ; function 132 signature index
-00000af: 00 ; function 133 signature index
-00000b0: 00 ; function 134 signature index
-00000b1: 00 ; function 135 signature index
-00000b2: 00 ; function 136 signature index
-00000b3: 00 ; function 137 signature index
-00000b4: 00 ; function 138 signature index
-00000b5: 00 ; function 139 signature index
-00000b6: 00 ; function 140 signature index
-00000b7: 00 ; function 141 signature index
-00000b8: 00 ; function 142 signature index
-00000b9: 00 ; function 143 signature index
-00000ba: 00 ; function 144 signature index
-00000bb: 00 ; function 145 signature index
-00000bc: 00 ; function 146 signature index
-00000bd: 00 ; function 147 signature index
-00000be: 00 ; function 148 signature index
-00000bf: 00 ; function 149 signature index
-00000c0: 00 ; function 150 signature index
-00000c1: 00 ; function 151 signature index
-00000c2: 00 ; function 152 signature index
-00000c3: 00 ; function 153 signature index
-00000c4: 00 ; function 154 signature index
-00000c5: 00 ; function 155 signature index
-00000c6: 00 ; function 156 signature index
-00000c7: 00 ; function 157 signature index
-00000c8: 00 ; function 158 signature index
-00000c9: 00 ; function 159 signature index
-00000ca: 00 ; function 160 signature index
-00000cb: 00 ; function 161 signature index
-00000cc: 00 ; function 162 signature index
-00000cd: 00 ; function 163 signature index
-00000ce: 00 ; function 164 signature index
-00000cf: 00 ; function 165 signature index
-00000d0: 00 ; function 166 signature index
-00000d1: 00 ; function 167 signature index
-00000d2: 00 ; function 168 signature index
-00000d3: 00 ; function 169 signature index
-00000d4: 00 ; function 170 signature index
-00000d5: 00 ; function 171 signature index
-00000d6: 00 ; function 172 signature index
-00000d7: 00 ; function 173 signature index
-00000d8: 00 ; function 174 signature index
-00000d9: 00 ; function 175 signature index
-00000da: 00 ; function 176 signature index
-00000db: 00 ; function 177 signature index
-00000dc: 00 ; function 178 signature index
-00000dd: 00 ; function 179 signature index
-00000de: 00 ; function 180 signature index
-00000df: 00 ; function 181 signature index
-00000e0: 00 ; function 182 signature index
-00000e1: 00 ; function 183 signature index
-00000e2: 00 ; function 184 signature index
-00000e3: 00 ; function 185 signature index
-00000e4: 00 ; function 186 signature index
-00000e5: 00 ; function 187 signature index
-00000e6: 00 ; function 188 signature index
-00000e7: 00 ; function 189 signature index
-00000e8: 00 ; function 190 signature index
-00000e9: 00 ; function 191 signature index
-00000ea: 00 ; function 192 signature index
-00000eb: 00 ; function 193 signature index
-00000ec: 00 ; function 194 signature index
-00000ed: 00 ; function 195 signature index
-00000ee: 00 ; function 196 signature index
-00000ef: 00 ; function 197 signature index
-00000f0: 00 ; function 198 signature index
-00000f1: 00 ; function 199 signature index
-00000f2: 00 ; function 200 signature index
-00000f3: 00 ; function 201 signature index
-00000f4: 00 ; function 202 signature index
-00000f5: 00 ; function 203 signature index
-00000f6: 00 ; function 204 signature index
-00000f7: 00 ; function 205 signature index
-00000f8: 00 ; function 206 signature index
-00000f9: 00 ; function 207 signature index
-00000fa: 00 ; function 208 signature index
-00000fb: 00 ; function 209 signature index
-00000fc: 00 ; function 210 signature index
-00000fd: 00 ; function 211 signature index
-00000fe: 00 ; function 212 signature index
-00000ff: 00 ; function 213 signature index
-0000100: 00 ; function 214 signature index
-0000101: 00 ; function 215 signature index
-0000102: 00 ; function 216 signature index
-0000103: 00 ; function 217 signature index
-0000104: 00 ; function 218 signature index
-0000105: 00 ; function 219 signature index
-0000106: 00 ; function 220 signature index
-0000107: 00 ; function 221 signature index
-0000108: 00 ; function 222 signature index
-0000109: 00 ; function 223 signature index
-000010a: 00 ; function 224 signature index
-000010b: 00 ; function 225 signature index
-000010c: 00 ; function 226 signature index
-000010d: 00 ; function 227 signature index
-000010e: 00 ; function 228 signature index
-000010f: 00 ; function 229 signature index
-0000110: 00 ; function 230 signature index
-0000111: 00 ; function 231 signature index
-0000112: 00 ; function 232 signature index
-0000113: 00 ; function 233 signature index
-0000114: 00 ; function 234 signature index
-0000115: 00 ; function 235 signature index
-0000116: 00 ; function 236 signature index
-0000117: 00 ; function 237 signature index
-0000118: 00 ; function 238 signature index
-0000119: 00 ; function 239 signature index
-000011a: 00 ; function 240 signature index
-000011b: 00 ; function 241 signature index
-000011c: 00 ; function 242 signature index
-000011d: 00 ; function 243 signature index
-000011e: 00 ; function 244 signature index
-000011f: 00 ; function 245 signature index
-0000120: 00 ; function 246 signature index
-; move data: [28, 121) -> [29, 122)
-0000027: f901 ; FIXUP section size
+0000022: 03 ; section code
+0000023: 00 ; section size (guess)
+0000024: f701 ; num functions
+0000026: 00 ; function 0 signature index
+0000027: 00 ; function 1 signature index
+0000028: 00 ; function 2 signature index
+0000029: 00 ; function 3 signature index
+000002a: 00 ; function 4 signature index
+000002b: 00 ; function 5 signature index
+000002c: 00 ; function 6 signature index
+000002d: 00 ; function 7 signature index
+000002e: 00 ; function 8 signature index
+000002f: 00 ; function 9 signature index
+0000030: 00 ; function 10 signature index
+0000031: 00 ; function 11 signature index
+0000032: 00 ; function 12 signature index
+0000033: 00 ; function 13 signature index
+0000034: 00 ; function 14 signature index
+0000035: 00 ; function 15 signature index
+0000036: 00 ; function 16 signature index
+0000037: 00 ; function 17 signature index
+0000038: 00 ; function 18 signature index
+0000039: 00 ; function 19 signature index
+000003a: 00 ; function 20 signature index
+000003b: 00 ; function 21 signature index
+000003c: 00 ; function 22 signature index
+000003d: 00 ; function 23 signature index
+000003e: 00 ; function 24 signature index
+000003f: 00 ; function 25 signature index
+0000040: 00 ; function 26 signature index
+0000041: 00 ; function 27 signature index
+0000042: 00 ; function 28 signature index
+0000043: 00 ; function 29 signature index
+0000044: 00 ; function 30 signature index
+0000045: 00 ; function 31 signature index
+0000046: 00 ; function 32 signature index
+0000047: 00 ; function 33 signature index
+0000048: 00 ; function 34 signature index
+0000049: 00 ; function 35 signature index
+000004a: 00 ; function 36 signature index
+000004b: 00 ; function 37 signature index
+000004c: 00 ; function 38 signature index
+000004d: 00 ; function 39 signature index
+000004e: 00 ; function 40 signature index
+000004f: 00 ; function 41 signature index
+0000050: 00 ; function 42 signature index
+0000051: 00 ; function 43 signature index
+0000052: 00 ; function 44 signature index
+0000053: 00 ; function 45 signature index
+0000054: 00 ; function 46 signature index
+0000055: 00 ; function 47 signature index
+0000056: 00 ; function 48 signature index
+0000057: 00 ; function 49 signature index
+0000058: 00 ; function 50 signature index
+0000059: 00 ; function 51 signature index
+000005a: 00 ; function 52 signature index
+000005b: 00 ; function 53 signature index
+000005c: 00 ; function 54 signature index
+000005d: 00 ; function 55 signature index
+000005e: 00 ; function 56 signature index
+000005f: 00 ; function 57 signature index
+0000060: 00 ; function 58 signature index
+0000061: 00 ; function 59 signature index
+0000062: 00 ; function 60 signature index
+0000063: 00 ; function 61 signature index
+0000064: 00 ; function 62 signature index
+0000065: 00 ; function 63 signature index
+0000066: 00 ; function 64 signature index
+0000067: 00 ; function 65 signature index
+0000068: 00 ; function 66 signature index
+0000069: 00 ; function 67 signature index
+000006a: 00 ; function 68 signature index
+000006b: 00 ; function 69 signature index
+000006c: 00 ; function 70 signature index
+000006d: 00 ; function 71 signature index
+000006e: 00 ; function 72 signature index
+000006f: 00 ; function 73 signature index
+0000070: 00 ; function 74 signature index
+0000071: 00 ; function 75 signature index
+0000072: 00 ; function 76 signature index
+0000073: 00 ; function 77 signature index
+0000074: 00 ; function 78 signature index
+0000075: 00 ; function 79 signature index
+0000076: 00 ; function 80 signature index
+0000077: 00 ; function 81 signature index
+0000078: 00 ; function 82 signature index
+0000079: 00 ; function 83 signature index
+000007a: 00 ; function 84 signature index
+000007b: 00 ; function 85 signature index
+000007c: 00 ; function 86 signature index
+000007d: 00 ; function 87 signature index
+000007e: 00 ; function 88 signature index
+000007f: 00 ; function 89 signature index
+0000080: 00 ; function 90 signature index
+0000081: 00 ; function 91 signature index
+0000082: 00 ; function 92 signature index
+0000083: 00 ; function 93 signature index
+0000084: 00 ; function 94 signature index
+0000085: 00 ; function 95 signature index
+0000086: 00 ; function 96 signature index
+0000087: 00 ; function 97 signature index
+0000088: 00 ; function 98 signature index
+0000089: 00 ; function 99 signature index
+000008a: 00 ; function 100 signature index
+000008b: 00 ; function 101 signature index
+000008c: 00 ; function 102 signature index
+000008d: 00 ; function 103 signature index
+000008e: 00 ; function 104 signature index
+000008f: 00 ; function 105 signature index
+0000090: 00 ; function 106 signature index
+0000091: 00 ; function 107 signature index
+0000092: 00 ; function 108 signature index
+0000093: 00 ; function 109 signature index
+0000094: 00 ; function 110 signature index
+0000095: 00 ; function 111 signature index
+0000096: 00 ; function 112 signature index
+0000097: 00 ; function 113 signature index
+0000098: 00 ; function 114 signature index
+0000099: 00 ; function 115 signature index
+000009a: 00 ; function 116 signature index
+000009b: 00 ; function 117 signature index
+000009c: 00 ; function 118 signature index
+000009d: 00 ; function 119 signature index
+000009e: 00 ; function 120 signature index
+000009f: 00 ; function 121 signature index
+00000a0: 00 ; function 122 signature index
+00000a1: 00 ; function 123 signature index
+00000a2: 00 ; function 124 signature index
+00000a3: 00 ; function 125 signature index
+00000a4: 00 ; function 126 signature index
+00000a5: 00 ; function 127 signature index
+00000a6: 00 ; function 128 signature index
+00000a7: 00 ; function 129 signature index
+00000a8: 00 ; function 130 signature index
+00000a9: 00 ; function 131 signature index
+00000aa: 00 ; function 132 signature index
+00000ab: 00 ; function 133 signature index
+00000ac: 00 ; function 134 signature index
+00000ad: 00 ; function 135 signature index
+00000ae: 00 ; function 136 signature index
+00000af: 00 ; function 137 signature index
+00000b0: 00 ; function 138 signature index
+00000b1: 00 ; function 139 signature index
+00000b2: 00 ; function 140 signature index
+00000b3: 00 ; function 141 signature index
+00000b4: 00 ; function 142 signature index
+00000b5: 00 ; function 143 signature index
+00000b6: 00 ; function 144 signature index
+00000b7: 00 ; function 145 signature index
+00000b8: 00 ; function 146 signature index
+00000b9: 00 ; function 147 signature index
+00000ba: 00 ; function 148 signature index
+00000bb: 00 ; function 149 signature index
+00000bc: 00 ; function 150 signature index
+00000bd: 00 ; function 151 signature index
+00000be: 00 ; function 152 signature index
+00000bf: 00 ; function 153 signature index
+00000c0: 00 ; function 154 signature index
+00000c1: 00 ; function 155 signature index
+00000c2: 00 ; function 156 signature index
+00000c3: 00 ; function 157 signature index
+00000c4: 00 ; function 158 signature index
+00000c5: 00 ; function 159 signature index
+00000c6: 00 ; function 160 signature index
+00000c7: 00 ; function 161 signature index
+00000c8: 00 ; function 162 signature index
+00000c9: 00 ; function 163 signature index
+00000ca: 00 ; function 164 signature index
+00000cb: 00 ; function 165 signature index
+00000cc: 00 ; function 166 signature index
+00000cd: 00 ; function 167 signature index
+00000ce: 00 ; function 168 signature index
+00000cf: 00 ; function 169 signature index
+00000d0: 00 ; function 170 signature index
+00000d1: 00 ; function 171 signature index
+00000d2: 00 ; function 172 signature index
+00000d3: 00 ; function 173 signature index
+00000d4: 00 ; function 174 signature index
+00000d5: 00 ; function 175 signature index
+00000d6: 00 ; function 176 signature index
+00000d7: 00 ; function 177 signature index
+00000d8: 00 ; function 178 signature index
+00000d9: 00 ; function 179 signature index
+00000da: 00 ; function 180 signature index
+00000db: 00 ; function 181 signature index
+00000dc: 00 ; function 182 signature index
+00000dd: 00 ; function 183 signature index
+00000de: 00 ; function 184 signature index
+00000df: 00 ; function 185 signature index
+00000e0: 00 ; function 186 signature index
+00000e1: 00 ; function 187 signature index
+00000e2: 00 ; function 188 signature index
+00000e3: 00 ; function 189 signature index
+00000e4: 00 ; function 190 signature index
+00000e5: 00 ; function 191 signature index
+00000e6: 00 ; function 192 signature index
+00000e7: 00 ; function 193 signature index
+00000e8: 00 ; function 194 signature index
+00000e9: 00 ; function 195 signature index
+00000ea: 00 ; function 196 signature index
+00000eb: 00 ; function 197 signature index
+00000ec: 00 ; function 198 signature index
+00000ed: 00 ; function 199 signature index
+00000ee: 00 ; function 200 signature index
+00000ef: 00 ; function 201 signature index
+00000f0: 00 ; function 202 signature index
+00000f1: 00 ; function 203 signature index
+00000f2: 00 ; function 204 signature index
+00000f3: 00 ; function 205 signature index
+00000f4: 00 ; function 206 signature index
+00000f5: 00 ; function 207 signature index
+00000f6: 00 ; function 208 signature index
+00000f7: 00 ; function 209 signature index
+00000f8: 00 ; function 210 signature index
+00000f9: 00 ; function 211 signature index
+00000fa: 00 ; function 212 signature index
+00000fb: 00 ; function 213 signature index
+00000fc: 00 ; function 214 signature index
+00000fd: 00 ; function 215 signature index
+00000fe: 00 ; function 216 signature index
+00000ff: 00 ; function 217 signature index
+0000100: 00 ; function 218 signature index
+0000101: 00 ; function 219 signature index
+0000102: 00 ; function 220 signature index
+0000103: 00 ; function 221 signature index
+0000104: 00 ; function 222 signature index
+0000105: 00 ; function 223 signature index
+0000106: 00 ; function 224 signature index
+0000107: 00 ; function 225 signature index
+0000108: 00 ; function 226 signature index
+0000109: 00 ; function 227 signature index
+000010a: 00 ; function 228 signature index
+000010b: 00 ; function 229 signature index
+000010c: 00 ; function 230 signature index
+000010d: 00 ; function 231 signature index
+000010e: 00 ; function 232 signature index
+000010f: 00 ; function 233 signature index
+0000110: 00 ; function 234 signature index
+0000111: 00 ; function 235 signature index
+0000112: 00 ; function 236 signature index
+0000113: 00 ; function 237 signature index
+0000114: 00 ; function 238 signature index
+0000115: 00 ; function 239 signature index
+0000116: 00 ; function 240 signature index
+0000117: 00 ; function 241 signature index
+0000118: 00 ; function 242 signature index
+0000119: 00 ; function 243 signature index
+000011a: 00 ; function 244 signature index
+000011b: 00 ; function 245 signature index
+000011c: 00 ; function 246 signature index
+; move data: [24, 11d) -> [25, 11e)
+0000023: f901 ; FIXUP section size
; section "Table" (4)
-0000122: 04 ; section code
-0000123: 00 ; section size (guess)
-0000124: 01 ; num tables
+000011e: 04 ; section code
+000011f: 00 ; section size (guess)
+0000120: 01 ; num tables
; table 0
-0000125: 70 ; anyfunc
-0000126: 01 ; limits: flags
-0000127: 02 ; limits: initial
-0000128: 02 ; limits: max
-0000123: 05 ; FIXUP section size
+0000121: 70 ; anyfunc
+0000122: 01 ; limits: flags
+0000123: 02 ; limits: initial
+0000124: 02 ; limits: max
+000011f: 05 ; FIXUP section size
; section "Memory" (5)
-0000129: 05 ; section code
-000012a: 00 ; section size (guess)
-000012b: 01 ; num memories
+0000125: 05 ; section code
+0000126: 00 ; section size (guess)
+0000127: 01 ; num memories
; memory 0
-000012c: 03 ; limits: flags
-000012d: 01 ; limits: initial
-000012e: 01 ; limits: max
-000012a: 04 ; FIXUP section size
+0000128: 03 ; limits: flags
+0000129: 01 ; limits: initial
+000012a: 01 ; limits: max
+0000126: 04 ; FIXUP section size
; section "Global" (6)
-000012f: 06 ; section code
-0000130: 00 ; section size (guess)
-0000131: 01 ; num globals
-0000132: 7f ; i32
-0000133: 01 ; global mutability
-0000134: 41 ; i32.const
-0000135: 00 ; i32 literal
-0000136: 0b ; end
-0000130: 06 ; FIXUP section size
+000012b: 06 ; section code
+000012c: 00 ; section size (guess)
+000012d: 01 ; num globals
+000012e: 7f ; i32
+000012f: 01 ; global mutability
+0000130: 41 ; i32.const
+0000131: 00 ; i32 literal
+0000132: 0b ; end
+000012c: 06 ; FIXUP section size
; section "Export" (7)
-0000137: 07 ; section code
-0000138: 00 ; section size (guess)
-0000139: f601 ; num exports
-000013b: 0b ; string length
-000013c: 756e 7265 6163 6861 626c 65 unreachable ; export name
-0000147: 00 ; export kind
-0000148: 02 ; export func index
-0000149: 02 ; string length
-000014a: 6272 br ; export name
-000014c: 00 ; export kind
-000014d: 03 ; export func index
-000014e: 08 ; string length
-000014f: 6272 5f74 6162 6c65 br_table ; export name
-0000157: 00 ; export kind
-0000158: 04 ; export func index
-0000159: 06 ; string length
-000015a: 7265 7475 726e return ; export name
-0000160: 00 ; export kind
-0000161: 05 ; export func index
-0000162: 04 ; string length
-0000163: 6361 6c6c call ; export name
-0000167: 00 ; export kind
-0000168: 06 ; export func index
-0000169: 0d ; string length
-000016a: 6361 6c6c 5f69 6e64 6972 6563 74 call_indirect ; export name
-0000177: 00 ; export kind
-0000178: 07 ; export func index
-0000179: 04 ; string length
-000017a: 6472 6f70 drop ; export name
-000017e: 00 ; export kind
-000017f: 08 ; export func index
-0000180: 06 ; string length
-0000181: 7365 6c65 6374 select ; export name
-0000187: 00 ; export kind
-0000188: 09 ; export func index
-0000189: 09 ; string length
-000018a: 6765 745f 6c6f 6361 6c get_local ; export name
-0000193: 00 ; export kind
-0000194: 0a ; export func index
-0000195: 09 ; string length
-0000196: 7365 745f 6c6f 6361 6c set_local ; export name
-000019f: 00 ; export kind
-00001a0: 0b ; export func index
-00001a1: 09 ; string length
-00001a2: 7465 655f 6c6f 6361 6c tee_local ; export name
-00001ab: 00 ; export kind
-00001ac: 0c ; export func index
-00001ad: 0a ; string length
-00001ae: 6765 745f 676c 6f62 616c get_global ; export name
-00001b8: 00 ; export kind
-00001b9: 0d ; export func index
-00001ba: 0a ; string length
-00001bb: 7365 745f 676c 6f62 616c set_global ; export name
-00001c5: 00 ; export kind
-00001c6: 0e ; export func index
-00001c7: 08 ; string length
-00001c8: 6933 322e 6c6f 6164 i32.load ; export name
-00001d0: 00 ; export kind
-00001d1: 0f ; export func index
-00001d2: 08 ; string length
-00001d3: 6936 342e 6c6f 6164 i64.load ; export name
-00001db: 00 ; export kind
-00001dc: 10 ; export func index
-00001dd: 08 ; string length
-00001de: 6633 322e 6c6f 6164 f32.load ; export name
-00001e6: 00 ; export kind
-00001e7: 11 ; export func index
-00001e8: 08 ; string length
-00001e9: 6636 342e 6c6f 6164 f64.load ; export name
-00001f1: 00 ; export kind
-00001f2: 12 ; export func index
-00001f3: 0b ; string length
-00001f4: 6933 322e 6c6f 6164 385f 73 i32.load8_s ; export name
-00001ff: 00 ; export kind
-0000200: 13 ; export func index
-0000201: 0b ; string length
-0000202: 6933 322e 6c6f 6164 385f 75 i32.load8_u ; export name
-000020d: 00 ; export kind
-000020e: 14 ; export func index
-000020f: 0c ; string length
-0000210: 6933 322e 6c6f 6164 3136 5f73 i32.load16_s ; export name
-000021c: 00 ; export kind
-000021d: 15 ; export func index
-000021e: 0c ; string length
-000021f: 6933 322e 6c6f 6164 3136 5f75 i32.load16_u ; export name
-000022b: 00 ; export kind
-000022c: 16 ; export func index
-000022d: 0b ; string length
-000022e: 6936 342e 6c6f 6164 385f 73 i64.load8_s ; export name
-0000239: 00 ; export kind
-000023a: 17 ; export func index
-000023b: 0b ; string length
-000023c: 6936 342e 6c6f 6164 385f 75 i64.load8_u ; export name
-0000247: 00 ; export kind
-0000248: 18 ; export func index
-0000249: 0c ; string length
-000024a: 6936 342e 6c6f 6164 3136 5f73 i64.load16_s ; export name
-0000256: 00 ; export kind
-0000257: 19 ; export func index
-0000258: 0c ; string length
-0000259: 6936 342e 6c6f 6164 3136 5f75 i64.load16_u ; export name
-0000265: 00 ; export kind
-0000266: 1a ; export func index
-0000267: 0c ; string length
-0000268: 6936 342e 6c6f 6164 3332 5f73 i64.load32_s ; export name
-0000274: 00 ; export kind
-0000275: 1b ; export func index
-0000276: 0c ; string length
-0000277: 6936 342e 6c6f 6164 3332 5f75 i64.load32_u ; export name
-0000283: 00 ; export kind
-0000284: 1c ; export func index
-0000285: 09 ; string length
-0000286: 6933 322e 7374 6f72 65 i32.store ; export name
-000028f: 00 ; export kind
-0000290: 1d ; export func index
-0000291: 09 ; string length
-0000292: 6936 342e 7374 6f72 65 i64.store ; export name
-000029b: 00 ; export kind
-000029c: 1e ; export func index
-000029d: 09 ; string length
-000029e: 6633 322e 7374 6f72 65 f32.store ; export name
-00002a7: 00 ; export kind
-00002a8: 1f ; export func index
-00002a9: 09 ; string length
-00002aa: 6636 342e 7374 6f72 65 f64.store ; export name
-00002b3: 00 ; export kind
-00002b4: 20 ; export func index
-00002b5: 0a ; string length
-00002b6: 6933 322e 7374 6f72 6538 i32.store8 ; export name
-00002c0: 00 ; export kind
-00002c1: 21 ; export func index
-00002c2: 0b ; string length
-00002c3: 6933 322e 7374 6f72 6531 36 i32.store16 ; export name
-00002ce: 00 ; export kind
-00002cf: 22 ; export func index
-00002d0: 0a ; string length
-00002d1: 6936 342e 7374 6f72 6538 i64.store8 ; export name
-00002db: 00 ; export kind
-00002dc: 23 ; export func index
-00002dd: 0b ; string length
-00002de: 6936 342e 7374 6f72 6531 36 i64.store16 ; export name
-00002e9: 00 ; export kind
-00002ea: 24 ; export func index
-00002eb: 0b ; string length
-00002ec: 6936 342e 7374 6f72 6533 32 i64.store32 ; export name
-00002f7: 00 ; export kind
-00002f8: 25 ; export func index
-00002f9: 0e ; string length
-00002fa: 6375 7272 656e 745f 6d65 6d6f 7279 current_memory ; export name
-0000308: 00 ; export kind
-0000309: 26 ; export func index
-000030a: 0b ; string length
-000030b: 6772 6f77 5f6d 656d 6f72 79 grow_memory ; export name
-0000316: 00 ; export kind
-0000317: 27 ; export func index
-0000318: 09 ; string length
-0000319: 6933 322e 636f 6e73 74 i32.const ; export name
-0000322: 00 ; export kind
-0000323: 28 ; export func index
-0000324: 09 ; string length
-0000325: 6936 342e 636f 6e73 74 i64.const ; export name
-000032e: 00 ; export kind
-000032f: 29 ; export func index
-0000330: 09 ; string length
-0000331: 6633 322e 636f 6e73 74 f32.const ; export name
-000033a: 00 ; export kind
-000033b: 2a ; export func index
-000033c: 09 ; string length
-000033d: 6636 342e 636f 6e73 74 f64.const ; export name
-0000346: 00 ; export kind
-0000347: 2b ; export func index
-0000348: 07 ; string length
-0000349: 6933 322e 6571 7a i32.eqz ; export name
-0000350: 00 ; export kind
-0000351: 2c ; export func index
-0000352: 06 ; string length
-0000353: 6933 322e 6571 i32.eq ; export name
-0000359: 00 ; export kind
-000035a: 2d ; export func index
-000035b: 06 ; string length
-000035c: 6933 322e 6e65 i32.ne ; export name
-0000362: 00 ; export kind
-0000363: 2e ; export func index
-0000364: 08 ; string length
-0000365: 6933 322e 6c74 5f73 i32.lt_s ; export name
-000036d: 00 ; export kind
-000036e: 2f ; export func index
-000036f: 08 ; string length
-0000370: 6933 322e 6c74 5f75 i32.lt_u ; export name
-0000378: 00 ; export kind
-0000379: 30 ; export func index
-000037a: 08 ; string length
-000037b: 6933 322e 6774 5f73 i32.gt_s ; export name
-0000383: 00 ; export kind
-0000384: 31 ; export func index
-0000385: 08 ; string length
-0000386: 6933 322e 6774 5f75 i32.gt_u ; export name
-000038e: 00 ; export kind
-000038f: 32 ; export func index
-0000390: 08 ; string length
-0000391: 6933 322e 6c65 5f73 i32.le_s ; export name
-0000399: 00 ; export kind
-000039a: 33 ; export func index
-000039b: 08 ; string length
-000039c: 6933 322e 6c65 5f75 i32.le_u ; export name
-00003a4: 00 ; export kind
-00003a5: 34 ; export func index
-00003a6: 08 ; string length
-00003a7: 6933 322e 6765 5f73 i32.ge_s ; export name
-00003af: 00 ; export kind
-00003b0: 35 ; export func index
-00003b1: 08 ; string length
-00003b2: 6933 322e 6765 5f75 i32.ge_u ; export name
-00003ba: 00 ; export kind
-00003bb: 36 ; export func index
-00003bc: 07 ; string length
-00003bd: 6936 342e 6571 7a i64.eqz ; export name
-00003c4: 00 ; export kind
-00003c5: 37 ; export func index
-00003c6: 06 ; string length
-00003c7: 6936 342e 6571 i64.eq ; export name
-00003cd: 00 ; export kind
-00003ce: 38 ; export func index
-00003cf: 06 ; string length
-00003d0: 6936 342e 6e65 i64.ne ; export name
-00003d6: 00 ; export kind
-00003d7: 39 ; export func index
-00003d8: 08 ; string length
-00003d9: 6936 342e 6c74 5f73 i64.lt_s ; export name
-00003e1: 00 ; export kind
-00003e2: 3a ; export func index
-00003e3: 08 ; string length
-00003e4: 6936 342e 6c74 5f75 i64.lt_u ; export name
-00003ec: 00 ; export kind
-00003ed: 3b ; export func index
-00003ee: 08 ; string length
-00003ef: 6936 342e 6774 5f73 i64.gt_s ; export name
-00003f7: 00 ; export kind
-00003f8: 3c ; export func index
-00003f9: 08 ; string length
-00003fa: 6936 342e 6774 5f75 i64.gt_u ; export name
-0000402: 00 ; export kind
-0000403: 3d ; export func index
-0000404: 08 ; string length
-0000405: 6936 342e 6c65 5f73 i64.le_s ; export name
-000040d: 00 ; export kind
-000040e: 3e ; export func index
-000040f: 08 ; string length
-0000410: 6936 342e 6c65 5f75 i64.le_u ; export name
-0000418: 00 ; export kind
-0000419: 3f ; export func index
-000041a: 08 ; string length
-000041b: 6936 342e 6765 5f73 i64.ge_s ; export name
-0000423: 00 ; export kind
-0000424: 40 ; export func index
-0000425: 08 ; string length
-0000426: 6936 342e 6765 5f75 i64.ge_u ; export name
-000042e: 00 ; export kind
-000042f: 41 ; export func index
-0000430: 06 ; string length
-0000431: 6633 322e 6571 f32.eq ; export name
-0000437: 00 ; export kind
-0000438: 42 ; export func index
-0000439: 06 ; string length
-000043a: 6633 322e 6e65 f32.ne ; export name
-0000440: 00 ; export kind
-0000441: 43 ; export func index
-0000442: 06 ; string length
-0000443: 6633 322e 6c74 f32.lt ; export name
-0000449: 00 ; export kind
-000044a: 44 ; export func index
-000044b: 06 ; string length
-000044c: 6633 322e 6774 f32.gt ; export name
-0000452: 00 ; export kind
-0000453: 45 ; export func index
-0000454: 06 ; string length
-0000455: 6633 322e 6c65 f32.le ; export name
-000045b: 00 ; export kind
-000045c: 46 ; export func index
-000045d: 06 ; string length
-000045e: 6633 322e 6765 f32.ge ; export name
-0000464: 00 ; export kind
-0000465: 47 ; export func index
-0000466: 06 ; string length
-0000467: 6636 342e 6571 f64.eq ; export name
-000046d: 00 ; export kind
-000046e: 48 ; export func index
-000046f: 06 ; string length
-0000470: 6636 342e 6e65 f64.ne ; export name
-0000476: 00 ; export kind
-0000477: 49 ; export func index
-0000478: 06 ; string length
-0000479: 6636 342e 6c74 f64.lt ; export name
-000047f: 00 ; export kind
-0000480: 4a ; export func index
-0000481: 06 ; string length
-0000482: 6636 342e 6774 f64.gt ; export name
-0000488: 00 ; export kind
-0000489: 4b ; export func index
-000048a: 06 ; string length
-000048b: 6636 342e 6c65 f64.le ; export name
-0000491: 00 ; export kind
-0000492: 4c ; export func index
-0000493: 06 ; string length
-0000494: 6636 342e 6765 f64.ge ; export name
-000049a: 00 ; export kind
-000049b: 4d ; export func index
-000049c: 07 ; string length
-000049d: 6933 322e 636c 7a i32.clz ; export name
-00004a4: 00 ; export kind
-00004a5: 4e ; export func index
-00004a6: 07 ; string length
-00004a7: 6933 322e 6374 7a i32.ctz ; export name
-00004ae: 00 ; export kind
-00004af: 4f ; export func index
-00004b0: 0a ; string length
-00004b1: 6933 322e 706f 7063 6e74 i32.popcnt ; export name
-00004bb: 00 ; export kind
-00004bc: 50 ; export func index
-00004bd: 07 ; string length
-00004be: 6933 322e 6164 64 i32.add ; export name
-00004c5: 00 ; export kind
-00004c6: 51 ; export func index
-00004c7: 07 ; string length
-00004c8: 6933 322e 7375 62 i32.sub ; export name
-00004cf: 00 ; export kind
-00004d0: 52 ; export func index
-00004d1: 07 ; string length
-00004d2: 6933 322e 6d75 6c i32.mul ; export name
-00004d9: 00 ; export kind
-00004da: 53 ; export func index
-00004db: 09 ; string length
-00004dc: 6933 322e 6469 765f 73 i32.div_s ; export name
-00004e5: 00 ; export kind
-00004e6: 54 ; export func index
-00004e7: 09 ; string length
-00004e8: 6933 322e 6469 765f 75 i32.div_u ; export name
-00004f1: 00 ; export kind
-00004f2: 55 ; export func index
-00004f3: 09 ; string length
-00004f4: 6933 322e 7265 6d5f 73 i32.rem_s ; export name
-00004fd: 00 ; export kind
-00004fe: 56 ; export func index
-00004ff: 09 ; string length
-0000500: 6933 322e 7265 6d5f 75 i32.rem_u ; export name
-0000509: 00 ; export kind
-000050a: 57 ; export func index
-000050b: 07 ; string length
-000050c: 6933 322e 616e 64 i32.and ; export name
-0000513: 00 ; export kind
-0000514: 58 ; export func index
-0000515: 06 ; string length
-0000516: 6933 322e 6f72 i32.or ; export name
-000051c: 00 ; export kind
-000051d: 59 ; export func index
-000051e: 07 ; string length
-000051f: 6933 322e 786f 72 i32.xor ; export name
-0000526: 00 ; export kind
-0000527: 5a ; export func index
-0000528: 07 ; string length
-0000529: 6933 322e 7368 6c i32.shl ; export name
-0000530: 00 ; export kind
-0000531: 5b ; export func index
-0000532: 09 ; string length
-0000533: 6933 322e 7368 725f 73 i32.shr_s ; export name
-000053c: 00 ; export kind
-000053d: 5c ; export func index
-000053e: 09 ; string length
-000053f: 6933 322e 7368 725f 75 i32.shr_u ; export name
-0000548: 00 ; export kind
-0000549: 5d ; export func index
-000054a: 08 ; string length
-000054b: 6933 322e 726f 746c i32.rotl ; export name
-0000553: 00 ; export kind
-0000554: 5e ; export func index
-0000555: 08 ; string length
-0000556: 6933 322e 726f 7472 i32.rotr ; export name
-000055e: 00 ; export kind
-000055f: 5f ; export func index
-0000560: 07 ; string length
-0000561: 6936 342e 636c 7a i64.clz ; export name
-0000568: 00 ; export kind
-0000569: 60 ; export func index
-000056a: 07 ; string length
-000056b: 6936 342e 6374 7a i64.ctz ; export name
-0000572: 00 ; export kind
-0000573: 61 ; export func index
-0000574: 0a ; string length
-0000575: 6936 342e 706f 7063 6e74 i64.popcnt ; export name
-000057f: 00 ; export kind
-0000580: 62 ; export func index
-0000581: 07 ; string length
-0000582: 6936 342e 6164 64 i64.add ; export name
-0000589: 00 ; export kind
-000058a: 63 ; export func index
-000058b: 07 ; string length
-000058c: 6936 342e 7375 62 i64.sub ; export name
-0000593: 00 ; export kind
-0000594: 64 ; export func index
-0000595: 07 ; string length
-0000596: 6936 342e 6d75 6c i64.mul ; export name
-000059d: 00 ; export kind
-000059e: 65 ; export func index
-000059f: 09 ; string length
-00005a0: 6936 342e 6469 765f 73 i64.div_s ; export name
-00005a9: 00 ; export kind
-00005aa: 66 ; export func index
-00005ab: 09 ; string length
-00005ac: 6936 342e 6469 765f 75 i64.div_u ; export name
-00005b5: 00 ; export kind
-00005b6: 67 ; export func index
-00005b7: 09 ; string length
-00005b8: 6936 342e 7265 6d5f 73 i64.rem_s ; export name
-00005c1: 00 ; export kind
-00005c2: 68 ; export func index
-00005c3: 09 ; string length
-00005c4: 6936 342e 7265 6d5f 75 i64.rem_u ; export name
-00005cd: 00 ; export kind
-00005ce: 69 ; export func index
-00005cf: 07 ; string length
-00005d0: 6936 342e 616e 64 i64.and ; export name
-00005d7: 00 ; export kind
-00005d8: 6a ; export func index
-00005d9: 06 ; string length
-00005da: 6936 342e 6f72 i64.or ; export name
-00005e0: 00 ; export kind
-00005e1: 6b ; export func index
-00005e2: 07 ; string length
-00005e3: 6936 342e 786f 72 i64.xor ; export name
-00005ea: 00 ; export kind
-00005eb: 6c ; export func index
-00005ec: 07 ; string length
-00005ed: 6936 342e 7368 6c i64.shl ; export name
-00005f4: 00 ; export kind
-00005f5: 6d ; export func index
-00005f6: 09 ; string length
-00005f7: 6936 342e 7368 725f 73 i64.shr_s ; export name
-0000600: 00 ; export kind
-0000601: 6e ; export func index
-0000602: 09 ; string length
-0000603: 6936 342e 7368 725f 75 i64.shr_u ; export name
-000060c: 00 ; export kind
-000060d: 6f ; export func index
-000060e: 08 ; string length
-000060f: 6936 342e 726f 746c i64.rotl ; export name
-0000617: 00 ; export kind
-0000618: 70 ; export func index
-0000619: 08 ; string length
-000061a: 6936 342e 726f 7472 i64.rotr ; export name
-0000622: 00 ; export kind
-0000623: 71 ; export func index
-0000624: 07 ; string length
-0000625: 6633 322e 6162 73 f32.abs ; export name
-000062c: 00 ; export kind
-000062d: 72 ; export func index
-000062e: 07 ; string length
-000062f: 6633 322e 6e65 67 f32.neg ; export name
-0000636: 00 ; export kind
-0000637: 73 ; export func index
-0000638: 08 ; string length
-0000639: 6633 322e 6365 696c f32.ceil ; export name
-0000641: 00 ; export kind
-0000642: 74 ; export func index
-0000643: 09 ; string length
-0000644: 6633 322e 666c 6f6f 72 f32.floor ; export name
-000064d: 00 ; export kind
-000064e: 75 ; export func index
-000064f: 09 ; string length
-0000650: 6633 322e 7472 756e 63 f32.trunc ; export name
-0000659: 00 ; export kind
-000065a: 76 ; export func index
-000065b: 0b ; string length
-000065c: 6633 322e 6e65 6172 6573 74 f32.nearest ; export name
-0000667: 00 ; export kind
-0000668: 77 ; export func index
-0000669: 08 ; string length
-000066a: 6633 322e 7371 7274 f32.sqrt ; export name
-0000672: 00 ; export kind
-0000673: 78 ; export func index
-0000674: 07 ; string length
-0000675: 6633 322e 6164 64 f32.add ; export name
-000067c: 00 ; export kind
-000067d: 79 ; export func index
-000067e: 07 ; string length
-000067f: 6633 322e 7375 62 f32.sub ; export name
-0000686: 00 ; export kind
-0000687: 7a ; export func index
-0000688: 07 ; string length
-0000689: 6633 322e 6d75 6c f32.mul ; export name
-0000690: 00 ; export kind
-0000691: 7b ; export func index
-0000692: 07 ; string length
-0000693: 6633 322e 6469 76 f32.div ; export name
-000069a: 00 ; export kind
-000069b: 7c ; export func index
-000069c: 07 ; string length
-000069d: 6633 322e 6d69 6e f32.min ; export name
-00006a4: 00 ; export kind
-00006a5: 7d ; export func index
-00006a6: 07 ; string length
-00006a7: 6633 322e 6d61 78 f32.max ; export name
-00006ae: 00 ; export kind
-00006af: 7e ; export func index
-00006b0: 0c ; string length
-00006b1: 6633 322e 636f 7079 7369 676e f32.copysign ; export name
-00006bd: 00 ; export kind
-00006be: 7f ; export func index
-00006bf: 07 ; string length
-00006c0: 6636 342e 6162 73 f64.abs ; export name
-00006c7: 00 ; export kind
-00006c8: 8001 ; export func index
-00006ca: 07 ; string length
-00006cb: 6636 342e 6e65 67 f64.neg ; export name
-00006d2: 00 ; export kind
-00006d3: 8101 ; export func index
-00006d5: 08 ; string length
-00006d6: 6636 342e 6365 696c f64.ceil ; export name
-00006de: 00 ; export kind
-00006df: 8201 ; export func index
-00006e1: 09 ; string length
-00006e2: 6636 342e 666c 6f6f 72 f64.floor ; export name
-00006eb: 00 ; export kind
-00006ec: 8301 ; export func index
-00006ee: 09 ; string length
-00006ef: 6636 342e 7472 756e 63 f64.trunc ; export name
-00006f8: 00 ; export kind
-00006f9: 8401 ; export func index
-00006fb: 0b ; string length
-00006fc: 6636 342e 6e65 6172 6573 74 f64.nearest ; export name
-0000707: 00 ; export kind
-0000708: 8501 ; export func index
-000070a: 08 ; string length
-000070b: 6636 342e 7371 7274 f64.sqrt ; export name
-0000713: 00 ; export kind
-0000714: 8601 ; export func index
-0000716: 07 ; string length
-0000717: 6636 342e 6164 64 f64.add ; export name
-000071e: 00 ; export kind
-000071f: 8701 ; export func index
-0000721: 07 ; string length
-0000722: 6636 342e 7375 62 f64.sub ; export name
-0000729: 00 ; export kind
-000072a: 8801 ; export func index
-000072c: 07 ; string length
-000072d: 6636 342e 6d75 6c f64.mul ; export name
-0000734: 00 ; export kind
-0000735: 8901 ; export func index
-0000737: 07 ; string length
-0000738: 6636 342e 6469 76 f64.div ; export name
-000073f: 00 ; export kind
-0000740: 8a01 ; export func index
-0000742: 07 ; string length
-0000743: 6636 342e 6d69 6e f64.min ; export name
-000074a: 00 ; export kind
-000074b: 8b01 ; export func index
-000074d: 07 ; string length
-000074e: 6636 342e 6d61 78 f64.max ; export name
-0000755: 00 ; export kind
-0000756: 8c01 ; export func index
-0000758: 0c ; string length
-0000759: 6636 342e 636f 7079 7369 676e f64.copysign ; export name
-0000765: 00 ; export kind
-0000766: 8d01 ; export func index
-0000768: 0c ; string length
-0000769: 6933 322e 7772 6170 2f69 3634 i32.wrap/i64 ; export name
-0000775: 00 ; export kind
-0000776: 8e01 ; export func index
-0000778: 0f ; string length
-0000779: 6933 322e 7472 756e 635f 732f 6633 32 i32.trunc_s/f32 ; export name
-0000788: 00 ; export kind
-0000789: 8f01 ; export func index
-000078b: 0f ; string length
-000078c: 6933 322e 7472 756e 635f 752f 6633 32 i32.trunc_u/f32 ; export name
-000079b: 00 ; export kind
-000079c: 9001 ; export func index
-000079e: 0f ; string length
-000079f: 6933 322e 7472 756e 635f 732f 6636 34 i32.trunc_s/f64 ; export name
-00007ae: 00 ; export kind
-00007af: 9101 ; export func index
-00007b1: 0f ; string length
-00007b2: 6933 322e 7472 756e 635f 752f 6636 34 i32.trunc_u/f64 ; export name
-00007c1: 00 ; export kind
-00007c2: 9201 ; export func index
-00007c4: 10 ; string length
-00007c5: 6936 342e 6578 7465 6e64 5f73 2f69 3332 i64.extend_s/i32 ; export name
-00007d5: 00 ; export kind
-00007d6: 9301 ; export func index
-00007d8: 10 ; string length
-00007d9: 6936 342e 6578 7465 6e64 5f75 2f69 3332 i64.extend_u/i32 ; export name
-00007e9: 00 ; export kind
-00007ea: 9401 ; export func index
-00007ec: 0f ; string length
-00007ed: 6936 342e 7472 756e 635f 732f 6633 32 i64.trunc_s/f32 ; export name
-00007fc: 00 ; export kind
-00007fd: 9501 ; export func index
-00007ff: 0f ; string length
-0000800: 6936 342e 7472 756e 635f 752f 6633 32 i64.trunc_u/f32 ; export name
-000080f: 00 ; export kind
-0000810: 9601 ; export func index
-0000812: 0f ; string length
-0000813: 6936 342e 7472 756e 635f 732f 6636 34 i64.trunc_s/f64 ; export name
-0000822: 00 ; export kind
-0000823: 9701 ; export func index
-0000825: 0f ; string length
-0000826: 6936 342e 7472 756e 635f 752f 6636 34 i64.trunc_u/f64 ; export name
-0000835: 00 ; export kind
-0000836: 9801 ; export func index
-0000838: 11 ; string length
-0000839: 6633 322e 636f 6e76 6572 745f 732f 6933 f32.convert_s/i3
-0000849: 32 2 ; export name
-000084a: 00 ; export kind
-000084b: 9901 ; export func index
-000084d: 11 ; string length
-000084e: 6633 322e 636f 6e76 6572 745f 752f 6933 f32.convert_u/i3
-000085e: 32 2 ; export name
-000085f: 00 ; export kind
-0000860: 9a01 ; export func index
-0000862: 11 ; string length
-0000863: 6633 322e 636f 6e76 6572 745f 732f 6936 f32.convert_s/i6
-0000873: 34 4 ; export name
-0000874: 00 ; export kind
-0000875: 9b01 ; export func index
-0000877: 11 ; string length
-0000878: 6633 322e 636f 6e76 6572 745f 752f 6936 f32.convert_u/i6
-0000888: 34 4 ; export name
-0000889: 00 ; export kind
-000088a: 9c01 ; export func index
-000088c: 0e ; string length
-000088d: 6633 322e 6465 6d6f 7465 2f66 3634 f32.demote/f64 ; export name
-000089b: 00 ; export kind
-000089c: 9d01 ; export func index
-000089e: 11 ; string length
-000089f: 6636 342e 636f 6e76 6572 745f 732f 6933 f64.convert_s/i3
-00008af: 32 2 ; export name
-00008b0: 00 ; export kind
-00008b1: 9e01 ; export func index
-00008b3: 11 ; string length
-00008b4: 6636 342e 636f 6e76 6572 745f 752f 6933 f64.convert_u/i3
-00008c4: 32 2 ; export name
-00008c5: 00 ; export kind
-00008c6: 9f01 ; export func index
-00008c8: 11 ; string length
-00008c9: 6636 342e 636f 6e76 6572 745f 732f 6936 f64.convert_s/i6
-00008d9: 34 4 ; export name
-00008da: 00 ; export kind
-00008db: a001 ; export func index
-00008dd: 11 ; string length
-00008de: 6636 342e 636f 6e76 6572 745f 752f 6936 f64.convert_u/i6
-00008ee: 34 4 ; export name
-00008ef: 00 ; export kind
-00008f0: a101 ; export func index
-00008f2: 0f ; string length
-00008f3: 6636 342e 7072 6f6d 6f74 652f 6633 32 f64.promote/f32 ; export name
-0000902: 00 ; export kind
-0000903: a201 ; export func index
-0000905: 13 ; string length
-0000906: 6933 322e 7265 696e 7465 7270 7265 742f i32.reinterpret/
-0000916: 6633 32 f32 ; export name
-0000919: 00 ; export kind
-000091a: a301 ; export func index
-000091c: 13 ; string length
-000091d: 6633 322e 7265 696e 7465 7270 7265 742f f32.reinterpret/
-000092d: 6933 32 i32 ; export name
-0000930: 00 ; export kind
-0000931: a401 ; export func index
-0000933: 13 ; string length
-0000934: 6936 342e 7265 696e 7465 7270 7265 742f i64.reinterpret/
-0000944: 6636 34 f64 ; export name
-0000947: 00 ; export kind
-0000948: a501 ; export func index
-000094a: 13 ; string length
-000094b: 6636 342e 7265 696e 7465 7270 7265 742f f64.reinterpret/
-000095b: 6936 34 i64 ; export name
-000095e: 00 ; export kind
-000095f: a601 ; export func index
-0000961: 0d ; string length
-0000962: 6933 322e 6578 7465 6e64 385f 73 i32.extend8_s ; export name
-000096f: 00 ; export kind
-0000970: a701 ; export func index
-0000972: 0e ; string length
-0000973: 6933 322e 6578 7465 6e64 3136 5f73 i32.extend16_s ; export name
-0000981: 00 ; export kind
-0000982: a801 ; export func index
-0000984: 0d ; string length
-0000985: 6936 342e 6578 7465 6e64 385f 73 i64.extend8_s ; export name
-0000992: 00 ; export kind
-0000993: a901 ; export func index
-0000995: 0e ; string length
-0000996: 6936 342e 6578 7465 6e64 3136 5f73 i64.extend16_s ; export name
-00009a4: 00 ; export kind
-00009a5: aa01 ; export func index
-00009a7: 0e ; string length
-00009a8: 6936 342e 6578 7465 6e64 3332 5f73 i64.extend32_s ; export name
-00009b6: 00 ; export kind
-00009b7: ab01 ; export func index
-00009b9: 06 ; string length
-00009ba: 616c 6c6f 6361 alloca ; export name
-00009c0: 00 ; export kind
-00009c1: ac01 ; export func index
-00009c3: 09 ; string length
-00009c4: 6272 5f75 6e6c 6573 73 br_unless ; export name
-00009cd: 00 ; export kind
-00009ce: ad01 ; export func index
-00009d0: 09 ; string length
-00009d1: 6361 6c6c 5f68 6f73 74 call_host ; export name
-00009da: 00 ; export kind
-00009db: ae01 ; export func index
-00009dd: 04 ; string length
-00009de: 6461 7461 data ; export name
-00009e2: 00 ; export kind
-00009e3: af01 ; export func index
-00009e5: 09 ; string length
-00009e6: 6472 6f70 5f6b 6565 70 drop_keep ; export name
-00009ef: 00 ; export kind
-00009f0: b001 ; export func index
-00009f2: 13 ; string length
-00009f3: 6933 322e 7472 756e 635f 733a 7361 742f i32.trunc_s:sat/
-0000a03: 6633 32 f32 ; export name
-0000a06: 00 ; export kind
-0000a07: b101 ; export func index
-0000a09: 13 ; string length
-0000a0a: 6933 322e 7472 756e 635f 753a 7361 742f i32.trunc_u:sat/
-0000a1a: 6633 32 f32 ; export name
-0000a1d: 00 ; export kind
-0000a1e: b201 ; export func index
-0000a20: 13 ; string length
-0000a21: 6933 322e 7472 756e 635f 733a 7361 742f i32.trunc_s:sat/
-0000a31: 6636 34 f64 ; export name
-0000a34: 00 ; export kind
-0000a35: b301 ; export func index
-0000a37: 13 ; string length
-0000a38: 6933 322e 7472 756e 635f 753a 7361 742f i32.trunc_u:sat/
-0000a48: 6636 34 f64 ; export name
-0000a4b: 00 ; export kind
-0000a4c: b401 ; export func index
-0000a4e: 13 ; string length
-0000a4f: 6936 342e 7472 756e 635f 733a 7361 742f i64.trunc_s:sat/
-0000a5f: 6633 32 f32 ; export name
-0000a62: 00 ; export kind
-0000a63: b501 ; export func index
-0000a65: 13 ; string length
-0000a66: 6936 342e 7472 756e 635f 753a 7361 742f i64.trunc_u:sat/
-0000a76: 6633 32 f32 ; export name
-0000a79: 00 ; export kind
-0000a7a: b601 ; export func index
-0000a7c: 13 ; string length
-0000a7d: 6936 342e 7472 756e 635f 733a 7361 742f i64.trunc_s:sat/
-0000a8d: 6636 34 f64 ; export name
-0000a90: 00 ; export kind
-0000a91: b701 ; export func index
-0000a93: 13 ; string length
-0000a94: 6936 342e 7472 756e 635f 753a 7361 742f i64.trunc_u:sat/
-0000aa4: 6636 34 f64 ; export name
-0000aa7: 00 ; export kind
-0000aa8: b801 ; export func index
-0000aaa: 0f ; string length
-0000aab: 6933 322e 6174 6f6d 6963 2e6c 6f61 64 i32.atomic.load ; export name
-0000aba: 00 ; export kind
-0000abb: b901 ; export func index
-0000abd: 0f ; string length
-0000abe: 6936 342e 6174 6f6d 6963 2e6c 6f61 64 i64.atomic.load ; export name
-0000acd: 00 ; export kind
-0000ace: ba01 ; export func index
-0000ad0: 12 ; string length
-0000ad1: 6933 322e 6174 6f6d 6963 2e6c 6f61 6438 i32.atomic.load8
-0000ae1: 5f75 _u ; export name
-0000ae3: 00 ; export kind
-0000ae4: bb01 ; export func index
-0000ae6: 13 ; string length
-0000ae7: 6933 322e 6174 6f6d 6963 2e6c 6f61 6431 i32.atomic.load1
-0000af7: 365f 75 6_u ; export name
-0000afa: 00 ; export kind
-0000afb: bc01 ; export func index
-0000afd: 12 ; string length
-0000afe: 6936 342e 6174 6f6d 6963 2e6c 6f61 6438 i64.atomic.load8
-0000b0e: 5f75 _u ; export name
-0000b10: 00 ; export kind
-0000b11: bd01 ; export func index
-0000b13: 13 ; string length
-0000b14: 6936 342e 6174 6f6d 6963 2e6c 6f61 6431 i64.atomic.load1
-0000b24: 365f 75 6_u ; export name
-0000b27: 00 ; export kind
-0000b28: be01 ; export func index
-0000b2a: 13 ; string length
-0000b2b: 6936 342e 6174 6f6d 6963 2e6c 6f61 6433 i64.atomic.load3
-0000b3b: 325f 75 2_u ; export name
-0000b3e: 00 ; export kind
-0000b3f: bf01 ; export func index
-0000b41: 10 ; string length
-0000b42: 6933 322e 6174 6f6d 6963 2e73 746f 7265 i32.atomic.store ; export name
-0000b52: 00 ; export kind
-0000b53: c001 ; export func index
-0000b55: 10 ; string length
-0000b56: 6936 342e 6174 6f6d 6963 2e73 746f 7265 i64.atomic.store ; export name
-0000b66: 00 ; export kind
-0000b67: c101 ; export func index
-0000b69: 11 ; string length
-0000b6a: 6933 322e 6174 6f6d 6963 2e73 746f 7265 i32.atomic.store
-0000b7a: 38 8 ; export name
-0000b7b: 00 ; export kind
-0000b7c: c201 ; export func index
-0000b7e: 12 ; string length
-0000b7f: 6933 322e 6174 6f6d 6963 2e73 746f 7265 i32.atomic.store
-0000b8f: 3136 16 ; export name
-0000b91: 00 ; export kind
-0000b92: c301 ; export func index
-0000b94: 11 ; string length
-0000b95: 6936 342e 6174 6f6d 6963 2e73 746f 7265 i64.atomic.store
-0000ba5: 38 8 ; export name
-0000ba6: 00 ; export kind
-0000ba7: c401 ; export func index
-0000ba9: 12 ; string length
-0000baa: 6936 342e 6174 6f6d 6963 2e73 746f 7265 i64.atomic.store
-0000bba: 3136 16 ; export name
-0000bbc: 00 ; export kind
-0000bbd: c501 ; export func index
-0000bbf: 12 ; string length
-0000bc0: 6936 342e 6174 6f6d 6963 2e73 746f 7265 i64.atomic.store
-0000bd0: 3332 32 ; export name
-0000bd2: 00 ; export kind
-0000bd3: c601 ; export func index
-0000bd5: 12 ; string length
-0000bd6: 6933 322e 6174 6f6d 6963 2e72 6d77 2e61 i32.atomic.rmw.a
-0000be6: 6464 dd ; export name
-0000be8: 00 ; export kind
-0000be9: c701 ; export func index
-0000beb: 12 ; string length
-0000bec: 6936 342e 6174 6f6d 6963 2e72 6d77 2e61 i64.atomic.rmw.a
-0000bfc: 6464 dd ; export name
-0000bfe: 00 ; export kind
-0000bff: c801 ; export func index
-0000c01: 15 ; string length
-0000c02: 6933 322e 6174 6f6d 6963 2e72 6d77 385f i32.atomic.rmw8_
-0000c12: 752e 6164 64 u.add ; export name
-0000c17: 00 ; export kind
-0000c18: c901 ; export func index
-0000c1a: 16 ; string length
-0000c1b: 6933 322e 6174 6f6d 6963 2e72 6d77 3136 i32.atomic.rmw16
-0000c2b: 5f75 2e61 6464 _u.add ; export name
-0000c31: 00 ; export kind
-0000c32: ca01 ; export func index
-0000c34: 15 ; string length
-0000c35: 6936 342e 6174 6f6d 6963 2e72 6d77 385f i64.atomic.rmw8_
-0000c45: 752e 6164 64 u.add ; export name
-0000c4a: 00 ; export kind
-0000c4b: cb01 ; export func index
-0000c4d: 16 ; string length
-0000c4e: 6936 342e 6174 6f6d 6963 2e72 6d77 3136 i64.atomic.rmw16
-0000c5e: 5f75 2e61 6464 _u.add ; export name
-0000c64: 00 ; export kind
-0000c65: cc01 ; export func index
-0000c67: 16 ; string length
-0000c68: 6936 342e 6174 6f6d 6963 2e72 6d77 3332 i64.atomic.rmw32
-0000c78: 5f75 2e61 6464 _u.add ; export name
-0000c7e: 00 ; export kind
-0000c7f: cd01 ; export func index
-0000c81: 12 ; string length
-0000c82: 6933 322e 6174 6f6d 6963 2e72 6d77 2e73 i32.atomic.rmw.s
-0000c92: 7562 ub ; export name
-0000c94: 00 ; export kind
-0000c95: ce01 ; export func index
-0000c97: 12 ; string length
-0000c98: 6936 342e 6174 6f6d 6963 2e72 6d77 2e73 i64.atomic.rmw.s
-0000ca8: 7562 ub ; export name
-0000caa: 00 ; export kind
-0000cab: cf01 ; export func index
-0000cad: 15 ; string length
-0000cae: 6933 322e 6174 6f6d 6963 2e72 6d77 385f i32.atomic.rmw8_
-0000cbe: 752e 7375 62 u.sub ; export name
-0000cc3: 00 ; export kind
-0000cc4: d001 ; export func index
-0000cc6: 16 ; string length
-0000cc7: 6933 322e 6174 6f6d 6963 2e72 6d77 3136 i32.atomic.rmw16
-0000cd7: 5f75 2e73 7562 _u.sub ; export name
-0000cdd: 00 ; export kind
-0000cde: d101 ; export func index
-0000ce0: 15 ; string length
-0000ce1: 6936 342e 6174 6f6d 6963 2e72 6d77 385f i64.atomic.rmw8_
-0000cf1: 752e 7375 62 u.sub ; export name
-0000cf6: 00 ; export kind
-0000cf7: d201 ; export func index
-0000cf9: 16 ; string length
-0000cfa: 6936 342e 6174 6f6d 6963 2e72 6d77 3136 i64.atomic.rmw16
-0000d0a: 5f75 2e73 7562 _u.sub ; export name
-0000d10: 00 ; export kind
-0000d11: d301 ; export func index
-0000d13: 16 ; string length
-0000d14: 6936 342e 6174 6f6d 6963 2e72 6d77 3332 i64.atomic.rmw32
-0000d24: 5f75 2e73 7562 _u.sub ; export name
-0000d2a: 00 ; export kind
-0000d2b: d401 ; export func index
-0000d2d: 12 ; string length
-0000d2e: 6933 322e 6174 6f6d 6963 2e72 6d77 2e61 i32.atomic.rmw.a
-0000d3e: 6e64 nd ; export name
-0000d40: 00 ; export kind
-0000d41: d501 ; export func index
-0000d43: 12 ; string length
-0000d44: 6936 342e 6174 6f6d 6963 2e72 6d77 2e61 i64.atomic.rmw.a
-0000d54: 6e64 nd ; export name
-0000d56: 00 ; export kind
-0000d57: d601 ; export func index
-0000d59: 15 ; string length
-0000d5a: 6933 322e 6174 6f6d 6963 2e72 6d77 385f i32.atomic.rmw8_
-0000d6a: 752e 616e 64 u.and ; export name
-0000d6f: 00 ; export kind
-0000d70: d701 ; export func index
-0000d72: 16 ; string length
-0000d73: 6933 322e 6174 6f6d 6963 2e72 6d77 3136 i32.atomic.rmw16
-0000d83: 5f75 2e61 6e64 _u.and ; export name
-0000d89: 00 ; export kind
-0000d8a: d801 ; export func index
-0000d8c: 15 ; string length
-0000d8d: 6936 342e 6174 6f6d 6963 2e72 6d77 385f i64.atomic.rmw8_
-0000d9d: 752e 616e 64 u.and ; export name
-0000da2: 00 ; export kind
-0000da3: d901 ; export func index
-0000da5: 16 ; string length
-0000da6: 6936 342e 6174 6f6d 6963 2e72 6d77 3136 i64.atomic.rmw16
-0000db6: 5f75 2e61 6e64 _u.and ; export name
-0000dbc: 00 ; export kind
-0000dbd: da01 ; export func index
-0000dbf: 16 ; string length
-0000dc0: 6936 342e 6174 6f6d 6963 2e72 6d77 3332 i64.atomic.rmw32
-0000dd0: 5f75 2e61 6e64 _u.and ; export name
-0000dd6: 00 ; export kind
-0000dd7: db01 ; export func index
-0000dd9: 11 ; string length
-0000dda: 6933 322e 6174 6f6d 6963 2e72 6d77 2e6f i32.atomic.rmw.o
-0000dea: 72 r ; export name
-0000deb: 00 ; export kind
-0000dec: dc01 ; export func index
-0000dee: 11 ; string length
-0000def: 6936 342e 6174 6f6d 6963 2e72 6d77 2e6f i64.atomic.rmw.o
-0000dff: 72 r ; export name
-0000e00: 00 ; export kind
-0000e01: dd01 ; export func index
-0000e03: 14 ; string length
-0000e04: 6933 322e 6174 6f6d 6963 2e72 6d77 385f i32.atomic.rmw8_
-0000e14: 752e 6f72 u.or ; export name
-0000e18: 00 ; export kind
-0000e19: de01 ; export func index
-0000e1b: 15 ; string length
-0000e1c: 6933 322e 6174 6f6d 6963 2e72 6d77 3136 i32.atomic.rmw16
-0000e2c: 5f75 2e6f 72 _u.or ; export name
-0000e31: 00 ; export kind
-0000e32: df01 ; export func index
-0000e34: 14 ; string length
-0000e35: 6936 342e 6174 6f6d 6963 2e72 6d77 385f i64.atomic.rmw8_
-0000e45: 752e 6f72 u.or ; export name
-0000e49: 00 ; export kind
-0000e4a: e001 ; export func index
-0000e4c: 15 ; string length
-0000e4d: 6936 342e 6174 6f6d 6963 2e72 6d77 3136 i64.atomic.rmw16
-0000e5d: 5f75 2e6f 72 _u.or ; export name
-0000e62: 00 ; export kind
-0000e63: e101 ; export func index
-0000e65: 15 ; string length
-0000e66: 6936 342e 6174 6f6d 6963 2e72 6d77 3332 i64.atomic.rmw32
-0000e76: 5f75 2e6f 72 _u.or ; export name
-0000e7b: 00 ; export kind
-0000e7c: e201 ; export func index
-0000e7e: 12 ; string length
-0000e7f: 6933 322e 6174 6f6d 6963 2e72 6d77 2e78 i32.atomic.rmw.x
-0000e8f: 6f72 or ; export name
-0000e91: 00 ; export kind
-0000e92: e301 ; export func index
-0000e94: 12 ; string length
-0000e95: 6936 342e 6174 6f6d 6963 2e72 6d77 2e78 i64.atomic.rmw.x
-0000ea5: 6f72 or ; export name
-0000ea7: 00 ; export kind
-0000ea8: e401 ; export func index
-0000eaa: 15 ; string length
-0000eab: 6933 322e 6174 6f6d 6963 2e72 6d77 385f i32.atomic.rmw8_
-0000ebb: 752e 786f 72 u.xor ; export name
-0000ec0: 00 ; export kind
-0000ec1: e501 ; export func index
-0000ec3: 16 ; string length
-0000ec4: 6933 322e 6174 6f6d 6963 2e72 6d77 3136 i32.atomic.rmw16
-0000ed4: 5f75 2e78 6f72 _u.xor ; export name
-0000eda: 00 ; export kind
-0000edb: e601 ; export func index
-0000edd: 15 ; string length
-0000ede: 6936 342e 6174 6f6d 6963 2e72 6d77 385f i64.atomic.rmw8_
-0000eee: 752e 786f 72 u.xor ; export name
-0000ef3: 00 ; export kind
-0000ef4: e701 ; export func index
-0000ef6: 16 ; string length
-0000ef7: 6936 342e 6174 6f6d 6963 2e72 6d77 3136 i64.atomic.rmw16
-0000f07: 5f75 2e78 6f72 _u.xor ; export name
-0000f0d: 00 ; export kind
-0000f0e: e801 ; export func index
-0000f10: 16 ; string length
-0000f11: 6936 342e 6174 6f6d 6963 2e72 6d77 3332 i64.atomic.rmw32
-0000f21: 5f75 2e78 6f72 _u.xor ; export name
-0000f27: 00 ; export kind
-0000f28: e901 ; export func index
-0000f2a: 13 ; string length
-0000f2b: 6933 322e 6174 6f6d 6963 2e72 6d77 2e78 i32.atomic.rmw.x
-0000f3b: 6368 67 chg ; export name
-0000f3e: 00 ; export kind
-0000f3f: ea01 ; export func index
-0000f41: 13 ; string length
-0000f42: 6936 342e 6174 6f6d 6963 2e72 6d77 2e78 i64.atomic.rmw.x
-0000f52: 6368 67 chg ; export name
-0000f55: 00 ; export kind
-0000f56: eb01 ; export func index
-0000f58: 16 ; string length
-0000f59: 6933 322e 6174 6f6d 6963 2e72 6d77 385f i32.atomic.rmw8_
-0000f69: 752e 7863 6867 u.xchg ; export name
-0000f6f: 00 ; export kind
-0000f70: ec01 ; export func index
-0000f72: 17 ; string length
-0000f73: 6933 322e 6174 6f6d 6963 2e72 6d77 3136 i32.atomic.rmw16
-0000f83: 5f75 2e78 6368 67 _u.xchg ; export name
-0000f8a: 00 ; export kind
-0000f8b: ed01 ; export func index
-0000f8d: 16 ; string length
-0000f8e: 6936 342e 6174 6f6d 6963 2e72 6d77 385f i64.atomic.rmw8_
-0000f9e: 752e 7863 6867 u.xchg ; export name
-0000fa4: 00 ; export kind
-0000fa5: ee01 ; export func index
-0000fa7: 17 ; string length
-0000fa8: 6936 342e 6174 6f6d 6963 2e72 6d77 3136 i64.atomic.rmw16
-0000fb8: 5f75 2e78 6368 67 _u.xchg ; export name
-0000fbf: 00 ; export kind
-0000fc0: ef01 ; export func index
-0000fc2: 17 ; string length
-0000fc3: 6936 342e 6174 6f6d 6963 2e72 6d77 3332 i64.atomic.rmw32
-0000fd3: 5f75 2e78 6368 67 _u.xchg ; export name
-0000fda: 00 ; export kind
-0000fdb: f001 ; export func index
-0000fdd: 16 ; string length
-0000fde: 6933 322e 6174 6f6d 6963 2e72 6d77 2e63 i32.atomic.rmw.c
-0000fee: 6d70 7863 6867 mpxchg ; export name
-0000ff4: 00 ; export kind
-0000ff5: f101 ; export func index
-0000ff7: 16 ; string length
-0000ff8: 6936 342e 6174 6f6d 6963 2e72 6d77 2e63 i64.atomic.rmw.c
-0001008: 6d70 7863 6867 mpxchg ; export name
-000100e: 00 ; export kind
-000100f: f201 ; export func index
-0001011: 19 ; string length
-0001012: 6933 322e 6174 6f6d 6963 2e72 6d77 385f i32.atomic.rmw8_
-0001022: 752e 636d 7078 6368 67 u.cmpxchg ; export name
-000102b: 00 ; export kind
-000102c: f301 ; export func index
-000102e: 1a ; string length
-000102f: 6933 322e 6174 6f6d 6963 2e72 6d77 3136 i32.atomic.rmw16
-000103f: 5f75 2e63 6d70 7863 6867 _u.cmpxchg ; export name
-0001049: 00 ; export kind
-000104a: f401 ; export func index
-000104c: 19 ; string length
-000104d: 6936 342e 6174 6f6d 6963 2e72 6d77 385f i64.atomic.rmw8_
-000105d: 752e 636d 7078 6368 67 u.cmpxchg ; export name
-0001066: 00 ; export kind
-0001067: f501 ; export func index
-0001069: 1a ; string length
-000106a: 6936 342e 6174 6f6d 6963 2e72 6d77 3136 i64.atomic.rmw16
-000107a: 5f75 2e63 6d70 7863 6867 _u.cmpxchg ; export name
-0001084: 00 ; export kind
-0001085: f601 ; export func index
-0001087: 1a ; string length
-0001088: 6936 342e 6174 6f6d 6963 2e72 6d77 3332 i64.atomic.rmw32
-0001098: 5f75 2e63 6d70 7863 6867 _u.cmpxchg ; export name
-00010a2: 00 ; export kind
-00010a3: f701 ; export func index
-; move data: [139, 10a5) -> [13a, 10a6)
-0000138: ec1e ; FIXUP section size
+0000133: 07 ; section code
+0000134: 00 ; section size (guess)
+0000135: f601 ; num exports
+0000137: 0b ; string length
+0000138: 756e 7265 6163 6861 626c 65 unreachable ; export name
+0000143: 00 ; export kind
+0000144: 02 ; export func index
+0000145: 02 ; string length
+0000146: 6272 br ; export name
+0000148: 00 ; export kind
+0000149: 03 ; export func index
+000014a: 08 ; string length
+000014b: 6272 5f74 6162 6c65 br_table ; export name
+0000153: 00 ; export kind
+0000154: 04 ; export func index
+0000155: 06 ; string length
+0000156: 7265 7475 726e return ; export name
+000015c: 00 ; export kind
+000015d: 05 ; export func index
+000015e: 04 ; string length
+000015f: 6361 6c6c call ; export name
+0000163: 00 ; export kind
+0000164: 06 ; export func index
+0000165: 0d ; string length
+0000166: 6361 6c6c 5f69 6e64 6972 6563 74 call_indirect ; export name
+0000173: 00 ; export kind
+0000174: 07 ; export func index
+0000175: 04 ; string length
+0000176: 6472 6f70 drop ; export name
+000017a: 00 ; export kind
+000017b: 08 ; export func index
+000017c: 06 ; string length
+000017d: 7365 6c65 6374 select ; export name
+0000183: 00 ; export kind
+0000184: 09 ; export func index
+0000185: 09 ; string length
+0000186: 6765 745f 6c6f 6361 6c get_local ; export name
+000018f: 00 ; export kind
+0000190: 0a ; export func index
+0000191: 09 ; string length
+0000192: 7365 745f 6c6f 6361 6c set_local ; export name
+000019b: 00 ; export kind
+000019c: 0b ; export func index
+000019d: 09 ; string length
+000019e: 7465 655f 6c6f 6361 6c tee_local ; export name
+00001a7: 00 ; export kind
+00001a8: 0c ; export func index
+00001a9: 0a ; string length
+00001aa: 6765 745f 676c 6f62 616c get_global ; export name
+00001b4: 00 ; export kind
+00001b5: 0d ; export func index
+00001b6: 0a ; string length
+00001b7: 7365 745f 676c 6f62 616c set_global ; export name
+00001c1: 00 ; export kind
+00001c2: 0e ; export func index
+00001c3: 08 ; string length
+00001c4: 6933 322e 6c6f 6164 i32.load ; export name
+00001cc: 00 ; export kind
+00001cd: 0f ; export func index
+00001ce: 08 ; string length
+00001cf: 6936 342e 6c6f 6164 i64.load ; export name
+00001d7: 00 ; export kind
+00001d8: 10 ; export func index
+00001d9: 08 ; string length
+00001da: 6633 322e 6c6f 6164 f32.load ; export name
+00001e2: 00 ; export kind
+00001e3: 11 ; export func index
+00001e4: 08 ; string length
+00001e5: 6636 342e 6c6f 6164 f64.load ; export name
+00001ed: 00 ; export kind
+00001ee: 12 ; export func index
+00001ef: 0b ; string length
+00001f0: 6933 322e 6c6f 6164 385f 73 i32.load8_s ; export name
+00001fb: 00 ; export kind
+00001fc: 13 ; export func index
+00001fd: 0b ; string length
+00001fe: 6933 322e 6c6f 6164 385f 75 i32.load8_u ; export name
+0000209: 00 ; export kind
+000020a: 14 ; export func index
+000020b: 0c ; string length
+000020c: 6933 322e 6c6f 6164 3136 5f73 i32.load16_s ; export name
+0000218: 00 ; export kind
+0000219: 15 ; export func index
+000021a: 0c ; string length
+000021b: 6933 322e 6c6f 6164 3136 5f75 i32.load16_u ; export name
+0000227: 00 ; export kind
+0000228: 16 ; export func index
+0000229: 0b ; string length
+000022a: 6936 342e 6c6f 6164 385f 73 i64.load8_s ; export name
+0000235: 00 ; export kind
+0000236: 17 ; export func index
+0000237: 0b ; string length
+0000238: 6936 342e 6c6f 6164 385f 75 i64.load8_u ; export name
+0000243: 00 ; export kind
+0000244: 18 ; export func index
+0000245: 0c ; string length
+0000246: 6936 342e 6c6f 6164 3136 5f73 i64.load16_s ; export name
+0000252: 00 ; export kind
+0000253: 19 ; export func index
+0000254: 0c ; string length
+0000255: 6936 342e 6c6f 6164 3136 5f75 i64.load16_u ; export name
+0000261: 00 ; export kind
+0000262: 1a ; export func index
+0000263: 0c ; string length
+0000264: 6936 342e 6c6f 6164 3332 5f73 i64.load32_s ; export name
+0000270: 00 ; export kind
+0000271: 1b ; export func index
+0000272: 0c ; string length
+0000273: 6936 342e 6c6f 6164 3332 5f75 i64.load32_u ; export name
+000027f: 00 ; export kind
+0000280: 1c ; export func index
+0000281: 09 ; string length
+0000282: 6933 322e 7374 6f72 65 i32.store ; export name
+000028b: 00 ; export kind
+000028c: 1d ; export func index
+000028d: 09 ; string length
+000028e: 6936 342e 7374 6f72 65 i64.store ; export name
+0000297: 00 ; export kind
+0000298: 1e ; export func index
+0000299: 09 ; string length
+000029a: 6633 322e 7374 6f72 65 f32.store ; export name
+00002a3: 00 ; export kind
+00002a4: 1f ; export func index
+00002a5: 09 ; string length
+00002a6: 6636 342e 7374 6f72 65 f64.store ; export name
+00002af: 00 ; export kind
+00002b0: 20 ; export func index
+00002b1: 0a ; string length
+00002b2: 6933 322e 7374 6f72 6538 i32.store8 ; export name
+00002bc: 00 ; export kind
+00002bd: 21 ; export func index
+00002be: 0b ; string length
+00002bf: 6933 322e 7374 6f72 6531 36 i32.store16 ; export name
+00002ca: 00 ; export kind
+00002cb: 22 ; export func index
+00002cc: 0a ; string length
+00002cd: 6936 342e 7374 6f72 6538 i64.store8 ; export name
+00002d7: 00 ; export kind
+00002d8: 23 ; export func index
+00002d9: 0b ; string length
+00002da: 6936 342e 7374 6f72 6531 36 i64.store16 ; export name
+00002e5: 00 ; export kind
+00002e6: 24 ; export func index
+00002e7: 0b ; string length
+00002e8: 6936 342e 7374 6f72 6533 32 i64.store32 ; export name
+00002f3: 00 ; export kind
+00002f4: 25 ; export func index
+00002f5: 0e ; string length
+00002f6: 6375 7272 656e 745f 6d65 6d6f 7279 current_memory ; export name
+0000304: 00 ; export kind
+0000305: 26 ; export func index
+0000306: 0b ; string length
+0000307: 6772 6f77 5f6d 656d 6f72 79 grow_memory ; export name
+0000312: 00 ; export kind
+0000313: 27 ; export func index
+0000314: 09 ; string length
+0000315: 6933 322e 636f 6e73 74 i32.const ; export name
+000031e: 00 ; export kind
+000031f: 28 ; export func index
+0000320: 09 ; string length
+0000321: 6936 342e 636f 6e73 74 i64.const ; export name
+000032a: 00 ; export kind
+000032b: 29 ; export func index
+000032c: 09 ; string length
+000032d: 6633 322e 636f 6e73 74 f32.const ; export name
+0000336: 00 ; export kind
+0000337: 2a ; export func index
+0000338: 09 ; string length
+0000339: 6636 342e 636f 6e73 74 f64.const ; export name
+0000342: 00 ; export kind
+0000343: 2b ; export func index
+0000344: 07 ; string length
+0000345: 6933 322e 6571 7a i32.eqz ; export name
+000034c: 00 ; export kind
+000034d: 2c ; export func index
+000034e: 06 ; string length
+000034f: 6933 322e 6571 i32.eq ; export name
+0000355: 00 ; export kind
+0000356: 2d ; export func index
+0000357: 06 ; string length
+0000358: 6933 322e 6e65 i32.ne ; export name
+000035e: 00 ; export kind
+000035f: 2e ; export func index
+0000360: 08 ; string length
+0000361: 6933 322e 6c74 5f73 i32.lt_s ; export name
+0000369: 00 ; export kind
+000036a: 2f ; export func index
+000036b: 08 ; string length
+000036c: 6933 322e 6c74 5f75 i32.lt_u ; export name
+0000374: 00 ; export kind
+0000375: 30 ; export func index
+0000376: 08 ; string length
+0000377: 6933 322e 6774 5f73 i32.gt_s ; export name
+000037f: 00 ; export kind
+0000380: 31 ; export func index
+0000381: 08 ; string length
+0000382: 6933 322e 6774 5f75 i32.gt_u ; export name
+000038a: 00 ; export kind
+000038b: 32 ; export func index
+000038c: 08 ; string length
+000038d: 6933 322e 6c65 5f73 i32.le_s ; export name
+0000395: 00 ; export kind
+0000396: 33 ; export func index
+0000397: 08 ; string length
+0000398: 6933 322e 6c65 5f75 i32.le_u ; export name
+00003a0: 00 ; export kind
+00003a1: 34 ; export func index
+00003a2: 08 ; string length
+00003a3: 6933 322e 6765 5f73 i32.ge_s ; export name
+00003ab: 00 ; export kind
+00003ac: 35 ; export func index
+00003ad: 08 ; string length
+00003ae: 6933 322e 6765 5f75 i32.ge_u ; export name
+00003b6: 00 ; export kind
+00003b7: 36 ; export func index
+00003b8: 07 ; string length
+00003b9: 6936 342e 6571 7a i64.eqz ; export name
+00003c0: 00 ; export kind
+00003c1: 37 ; export func index
+00003c2: 06 ; string length
+00003c3: 6936 342e 6571 i64.eq ; export name
+00003c9: 00 ; export kind
+00003ca: 38 ; export func index
+00003cb: 06 ; string length
+00003cc: 6936 342e 6e65 i64.ne ; export name
+00003d2: 00 ; export kind
+00003d3: 39 ; export func index
+00003d4: 08 ; string length
+00003d5: 6936 342e 6c74 5f73 i64.lt_s ; export name
+00003dd: 00 ; export kind
+00003de: 3a ; export func index
+00003df: 08 ; string length
+00003e0: 6936 342e 6c74 5f75 i64.lt_u ; export name
+00003e8: 00 ; export kind
+00003e9: 3b ; export func index
+00003ea: 08 ; string length
+00003eb: 6936 342e 6774 5f73 i64.gt_s ; export name
+00003f3: 00 ; export kind
+00003f4: 3c ; export func index
+00003f5: 08 ; string length
+00003f6: 6936 342e 6774 5f75 i64.gt_u ; export name
+00003fe: 00 ; export kind
+00003ff: 3d ; export func index
+0000400: 08 ; string length
+0000401: 6936 342e 6c65 5f73 i64.le_s ; export name
+0000409: 00 ; export kind
+000040a: 3e ; export func index
+000040b: 08 ; string length
+000040c: 6936 342e 6c65 5f75 i64.le_u ; export name
+0000414: 00 ; export kind
+0000415: 3f ; export func index
+0000416: 08 ; string length
+0000417: 6936 342e 6765 5f73 i64.ge_s ; export name
+000041f: 00 ; export kind
+0000420: 40 ; export func index
+0000421: 08 ; string length
+0000422: 6936 342e 6765 5f75 i64.ge_u ; export name
+000042a: 00 ; export kind
+000042b: 41 ; export func index
+000042c: 06 ; string length
+000042d: 6633 322e 6571 f32.eq ; export name
+0000433: 00 ; export kind
+0000434: 42 ; export func index
+0000435: 06 ; string length
+0000436: 6633 322e 6e65 f32.ne ; export name
+000043c: 00 ; export kind
+000043d: 43 ; export func index
+000043e: 06 ; string length
+000043f: 6633 322e 6c74 f32.lt ; export name
+0000445: 00 ; export kind
+0000446: 44 ; export func index
+0000447: 06 ; string length
+0000448: 6633 322e 6774 f32.gt ; export name
+000044e: 00 ; export kind
+000044f: 45 ; export func index
+0000450: 06 ; string length
+0000451: 6633 322e 6c65 f32.le ; export name
+0000457: 00 ; export kind
+0000458: 46 ; export func index
+0000459: 06 ; string length
+000045a: 6633 322e 6765 f32.ge ; export name
+0000460: 00 ; export kind
+0000461: 47 ; export func index
+0000462: 06 ; string length
+0000463: 6636 342e 6571 f64.eq ; export name
+0000469: 00 ; export kind
+000046a: 48 ; export func index
+000046b: 06 ; string length
+000046c: 6636 342e 6e65 f64.ne ; export name
+0000472: 00 ; export kind
+0000473: 49 ; export func index
+0000474: 06 ; string length
+0000475: 6636 342e 6c74 f64.lt ; export name
+000047b: 00 ; export kind
+000047c: 4a ; export func index
+000047d: 06 ; string length
+000047e: 6636 342e 6774 f64.gt ; export name
+0000484: 00 ; export kind
+0000485: 4b ; export func index
+0000486: 06 ; string length
+0000487: 6636 342e 6c65 f64.le ; export name
+000048d: 00 ; export kind
+000048e: 4c ; export func index
+000048f: 06 ; string length
+0000490: 6636 342e 6765 f64.ge ; export name
+0000496: 00 ; export kind
+0000497: 4d ; export func index
+0000498: 07 ; string length
+0000499: 6933 322e 636c 7a i32.clz ; export name
+00004a0: 00 ; export kind
+00004a1: 4e ; export func index
+00004a2: 07 ; string length
+00004a3: 6933 322e 6374 7a i32.ctz ; export name
+00004aa: 00 ; export kind
+00004ab: 4f ; export func index
+00004ac: 0a ; string length
+00004ad: 6933 322e 706f 7063 6e74 i32.popcnt ; export name
+00004b7: 00 ; export kind
+00004b8: 50 ; export func index
+00004b9: 07 ; string length
+00004ba: 6933 322e 6164 64 i32.add ; export name
+00004c1: 00 ; export kind
+00004c2: 51 ; export func index
+00004c3: 07 ; string length
+00004c4: 6933 322e 7375 62 i32.sub ; export name
+00004cb: 00 ; export kind
+00004cc: 52 ; export func index
+00004cd: 07 ; string length
+00004ce: 6933 322e 6d75 6c i32.mul ; export name
+00004d5: 00 ; export kind
+00004d6: 53 ; export func index
+00004d7: 09 ; string length
+00004d8: 6933 322e 6469 765f 73 i32.div_s ; export name
+00004e1: 00 ; export kind
+00004e2: 54 ; export func index
+00004e3: 09 ; string length
+00004e4: 6933 322e 6469 765f 75 i32.div_u ; export name
+00004ed: 00 ; export kind
+00004ee: 55 ; export func index
+00004ef: 09 ; string length
+00004f0: 6933 322e 7265 6d5f 73 i32.rem_s ; export name
+00004f9: 00 ; export kind
+00004fa: 56 ; export func index
+00004fb: 09 ; string length
+00004fc: 6933 322e 7265 6d5f 75 i32.rem_u ; export name
+0000505: 00 ; export kind
+0000506: 57 ; export func index
+0000507: 07 ; string length
+0000508: 6933 322e 616e 64 i32.and ; export name
+000050f: 00 ; export kind
+0000510: 58 ; export func index
+0000511: 06 ; string length
+0000512: 6933 322e 6f72 i32.or ; export name
+0000518: 00 ; export kind
+0000519: 59 ; export func index
+000051a: 07 ; string length
+000051b: 6933 322e 786f 72 i32.xor ; export name
+0000522: 00 ; export kind
+0000523: 5a ; export func index
+0000524: 07 ; string length
+0000525: 6933 322e 7368 6c i32.shl ; export name
+000052c: 00 ; export kind
+000052d: 5b ; export func index
+000052e: 09 ; string length
+000052f: 6933 322e 7368 725f 73 i32.shr_s ; export name
+0000538: 00 ; export kind
+0000539: 5c ; export func index
+000053a: 09 ; string length
+000053b: 6933 322e 7368 725f 75 i32.shr_u ; export name
+0000544: 00 ; export kind
+0000545: 5d ; export func index
+0000546: 08 ; string length
+0000547: 6933 322e 726f 746c i32.rotl ; export name
+000054f: 00 ; export kind
+0000550: 5e ; export func index
+0000551: 08 ; string length
+0000552: 6933 322e 726f 7472 i32.rotr ; export name
+000055a: 00 ; export kind
+000055b: 5f ; export func index
+000055c: 07 ; string length
+000055d: 6936 342e 636c 7a i64.clz ; export name
+0000564: 00 ; export kind
+0000565: 60 ; export func index
+0000566: 07 ; string length
+0000567: 6936 342e 6374 7a i64.ctz ; export name
+000056e: 00 ; export kind
+000056f: 61 ; export func index
+0000570: 0a ; string length
+0000571: 6936 342e 706f 7063 6e74 i64.popcnt ; export name
+000057b: 00 ; export kind
+000057c: 62 ; export func index
+000057d: 07 ; string length
+000057e: 6936 342e 6164 64 i64.add ; export name
+0000585: 00 ; export kind
+0000586: 63 ; export func index
+0000587: 07 ; string length
+0000588: 6936 342e 7375 62 i64.sub ; export name
+000058f: 00 ; export kind
+0000590: 64 ; export func index
+0000591: 07 ; string length
+0000592: 6936 342e 6d75 6c i64.mul ; export name
+0000599: 00 ; export kind
+000059a: 65 ; export func index
+000059b: 09 ; string length
+000059c: 6936 342e 6469 765f 73 i64.div_s ; export name
+00005a5: 00 ; export kind
+00005a6: 66 ; export func index
+00005a7: 09 ; string length
+00005a8: 6936 342e 6469 765f 75 i64.div_u ; export name
+00005b1: 00 ; export kind
+00005b2: 67 ; export func index
+00005b3: 09 ; string length
+00005b4: 6936 342e 7265 6d5f 73 i64.rem_s ; export name
+00005bd: 00 ; export kind
+00005be: 68 ; export func index
+00005bf: 09 ; string length
+00005c0: 6936 342e 7265 6d5f 75 i64.rem_u ; export name
+00005c9: 00 ; export kind
+00005ca: 69 ; export func index
+00005cb: 07 ; string length
+00005cc: 6936 342e 616e 64 i64.and ; export name
+00005d3: 00 ; export kind
+00005d4: 6a ; export func index
+00005d5: 06 ; string length
+00005d6: 6936 342e 6f72 i64.or ; export name
+00005dc: 00 ; export kind
+00005dd: 6b ; export func index
+00005de: 07 ; string length
+00005df: 6936 342e 786f 72 i64.xor ; export name
+00005e6: 00 ; export kind
+00005e7: 6c ; export func index
+00005e8: 07 ; string length
+00005e9: 6936 342e 7368 6c i64.shl ; export name
+00005f0: 00 ; export kind
+00005f1: 6d ; export func index
+00005f2: 09 ; string length
+00005f3: 6936 342e 7368 725f 73 i64.shr_s ; export name
+00005fc: 00 ; export kind
+00005fd: 6e ; export func index
+00005fe: 09 ; string length
+00005ff: 6936 342e 7368 725f 75 i64.shr_u ; export name
+0000608: 00 ; export kind
+0000609: 6f ; export func index
+000060a: 08 ; string length
+000060b: 6936 342e 726f 746c i64.rotl ; export name
+0000613: 00 ; export kind
+0000614: 70 ; export func index
+0000615: 08 ; string length
+0000616: 6936 342e 726f 7472 i64.rotr ; export name
+000061e: 00 ; export kind
+000061f: 71 ; export func index
+0000620: 07 ; string length
+0000621: 6633 322e 6162 73 f32.abs ; export name
+0000628: 00 ; export kind
+0000629: 72 ; export func index
+000062a: 07 ; string length
+000062b: 6633 322e 6e65 67 f32.neg ; export name
+0000632: 00 ; export kind
+0000633: 73 ; export func index
+0000634: 08 ; string length
+0000635: 6633 322e 6365 696c f32.ceil ; export name
+000063d: 00 ; export kind
+000063e: 74 ; export func index
+000063f: 09 ; string length
+0000640: 6633 322e 666c 6f6f 72 f32.floor ; export name
+0000649: 00 ; export kind
+000064a: 75 ; export func index
+000064b: 09 ; string length
+000064c: 6633 322e 7472 756e 63 f32.trunc ; export name
+0000655: 00 ; export kind
+0000656: 76 ; export func index
+0000657: 0b ; string length
+0000658: 6633 322e 6e65 6172 6573 74 f32.nearest ; export name
+0000663: 00 ; export kind
+0000664: 77 ; export func index
+0000665: 08 ; string length
+0000666: 6633 322e 7371 7274 f32.sqrt ; export name
+000066e: 00 ; export kind
+000066f: 78 ; export func index
+0000670: 07 ; string length
+0000671: 6633 322e 6164 64 f32.add ; export name
+0000678: 00 ; export kind
+0000679: 79 ; export func index
+000067a: 07 ; string length
+000067b: 6633 322e 7375 62 f32.sub ; export name
+0000682: 00 ; export kind
+0000683: 7a ; export func index
+0000684: 07 ; string length
+0000685: 6633 322e 6d75 6c f32.mul ; export name
+000068c: 00 ; export kind
+000068d: 7b ; export func index
+000068e: 07 ; string length
+000068f: 6633 322e 6469 76 f32.div ; export name
+0000696: 00 ; export kind
+0000697: 7c ; export func index
+0000698: 07 ; string length
+0000699: 6633 322e 6d69 6e f32.min ; export name
+00006a0: 00 ; export kind
+00006a1: 7d ; export func index
+00006a2: 07 ; string length
+00006a3: 6633 322e 6d61 78 f32.max ; export name
+00006aa: 00 ; export kind
+00006ab: 7e ; export func index
+00006ac: 0c ; string length
+00006ad: 6633 322e 636f 7079 7369 676e f32.copysign ; export name
+00006b9: 00 ; export kind
+00006ba: 7f ; export func index
+00006bb: 07 ; string length
+00006bc: 6636 342e 6162 73 f64.abs ; export name
+00006c3: 00 ; export kind
+00006c4: 8001 ; export func index
+00006c6: 07 ; string length
+00006c7: 6636 342e 6e65 67 f64.neg ; export name
+00006ce: 00 ; export kind
+00006cf: 8101 ; export func index
+00006d1: 08 ; string length
+00006d2: 6636 342e 6365 696c f64.ceil ; export name
+00006da: 00 ; export kind
+00006db: 8201 ; export func index
+00006dd: 09 ; string length
+00006de: 6636 342e 666c 6f6f 72 f64.floor ; export name
+00006e7: 00 ; export kind
+00006e8: 8301 ; export func index
+00006ea: 09 ; string length
+00006eb: 6636 342e 7472 756e 63 f64.trunc ; export name
+00006f4: 00 ; export kind
+00006f5: 8401 ; export func index
+00006f7: 0b ; string length
+00006f8: 6636 342e 6e65 6172 6573 74 f64.nearest ; export name
+0000703: 00 ; export kind
+0000704: 8501 ; export func index
+0000706: 08 ; string length
+0000707: 6636 342e 7371 7274 f64.sqrt ; export name
+000070f: 00 ; export kind
+0000710: 8601 ; export func index
+0000712: 07 ; string length
+0000713: 6636 342e 6164 64 f64.add ; export name
+000071a: 00 ; export kind
+000071b: 8701 ; export func index
+000071d: 07 ; string length
+000071e: 6636 342e 7375 62 f64.sub ; export name
+0000725: 00 ; export kind
+0000726: 8801 ; export func index
+0000728: 07 ; string length
+0000729: 6636 342e 6d75 6c f64.mul ; export name
+0000730: 00 ; export kind
+0000731: 8901 ; export func index
+0000733: 07 ; string length
+0000734: 6636 342e 6469 76 f64.div ; export name
+000073b: 00 ; export kind
+000073c: 8a01 ; export func index
+000073e: 07 ; string length
+000073f: 6636 342e 6d69 6e f64.min ; export name
+0000746: 00 ; export kind
+0000747: 8b01 ; export func index
+0000749: 07 ; string length
+000074a: 6636 342e 6d61 78 f64.max ; export name
+0000751: 00 ; export kind
+0000752: 8c01 ; export func index
+0000754: 0c ; string length
+0000755: 6636 342e 636f 7079 7369 676e f64.copysign ; export name
+0000761: 00 ; export kind
+0000762: 8d01 ; export func index
+0000764: 0c ; string length
+0000765: 6933 322e 7772 6170 2f69 3634 i32.wrap/i64 ; export name
+0000771: 00 ; export kind
+0000772: 8e01 ; export func index
+0000774: 0f ; string length
+0000775: 6933 322e 7472 756e 635f 732f 6633 32 i32.trunc_s/f32 ; export name
+0000784: 00 ; export kind
+0000785: 8f01 ; export func index
+0000787: 0f ; string length
+0000788: 6933 322e 7472 756e 635f 752f 6633 32 i32.trunc_u/f32 ; export name
+0000797: 00 ; export kind
+0000798: 9001 ; export func index
+000079a: 0f ; string length
+000079b: 6933 322e 7472 756e 635f 732f 6636 34 i32.trunc_s/f64 ; export name
+00007aa: 00 ; export kind
+00007ab: 9101 ; export func index
+00007ad: 0f ; string length
+00007ae: 6933 322e 7472 756e 635f 752f 6636 34 i32.trunc_u/f64 ; export name
+00007bd: 00 ; export kind
+00007be: 9201 ; export func index
+00007c0: 10 ; string length
+00007c1: 6936 342e 6578 7465 6e64 5f73 2f69 3332 i64.extend_s/i32 ; export name
+00007d1: 00 ; export kind
+00007d2: 9301 ; export func index
+00007d4: 10 ; string length
+00007d5: 6936 342e 6578 7465 6e64 5f75 2f69 3332 i64.extend_u/i32 ; export name
+00007e5: 00 ; export kind
+00007e6: 9401 ; export func index
+00007e8: 0f ; string length
+00007e9: 6936 342e 7472 756e 635f 732f 6633 32 i64.trunc_s/f32 ; export name
+00007f8: 00 ; export kind
+00007f9: 9501 ; export func index
+00007fb: 0f ; string length
+00007fc: 6936 342e 7472 756e 635f 752f 6633 32 i64.trunc_u/f32 ; export name
+000080b: 00 ; export kind
+000080c: 9601 ; export func index
+000080e: 0f ; string length
+000080f: 6936 342e 7472 756e 635f 732f 6636 34 i64.trunc_s/f64 ; export name
+000081e: 00 ; export kind
+000081f: 9701 ; export func index
+0000821: 0f ; string length
+0000822: 6936 342e 7472 756e 635f 752f 6636 34 i64.trunc_u/f64 ; export name
+0000831: 00 ; export kind
+0000832: 9801 ; export func index
+0000834: 11 ; string length
+0000835: 6633 322e 636f 6e76 6572 745f 732f 6933 f32.convert_s/i3
+0000845: 32 2 ; export name
+0000846: 00 ; export kind
+0000847: 9901 ; export func index
+0000849: 11 ; string length
+000084a: 6633 322e 636f 6e76 6572 745f 752f 6933 f32.convert_u/i3
+000085a: 32 2 ; export name
+000085b: 00 ; export kind
+000085c: 9a01 ; export func index
+000085e: 11 ; string length
+000085f: 6633 322e 636f 6e76 6572 745f 732f 6936 f32.convert_s/i6
+000086f: 34 4 ; export name
+0000870: 00 ; export kind
+0000871: 9b01 ; export func index
+0000873: 11 ; string length
+0000874: 6633 322e 636f 6e76 6572 745f 752f 6936 f32.convert_u/i6
+0000884: 34 4 ; export name
+0000885: 00 ; export kind
+0000886: 9c01 ; export func index
+0000888: 0e ; string length
+0000889: 6633 322e 6465 6d6f 7465 2f66 3634 f32.demote/f64 ; export name
+0000897: 00 ; export kind
+0000898: 9d01 ; export func index
+000089a: 11 ; string length
+000089b: 6636 342e 636f 6e76 6572 745f 732f 6933 f64.convert_s/i3
+00008ab: 32 2 ; export name
+00008ac: 00 ; export kind
+00008ad: 9e01 ; export func index
+00008af: 11 ; string length
+00008b0: 6636 342e 636f 6e76 6572 745f 752f 6933 f64.convert_u/i3
+00008c0: 32 2 ; export name
+00008c1: 00 ; export kind
+00008c2: 9f01 ; export func index
+00008c4: 11 ; string length
+00008c5: 6636 342e 636f 6e76 6572 745f 732f 6936 f64.convert_s/i6
+00008d5: 34 4 ; export name
+00008d6: 00 ; export kind
+00008d7: a001 ; export func index
+00008d9: 11 ; string length
+00008da: 6636 342e 636f 6e76 6572 745f 752f 6936 f64.convert_u/i6
+00008ea: 34 4 ; export name
+00008eb: 00 ; export kind
+00008ec: a101 ; export func index
+00008ee: 0f ; string length
+00008ef: 6636 342e 7072 6f6d 6f74 652f 6633 32 f64.promote/f32 ; export name
+00008fe: 00 ; export kind
+00008ff: a201 ; export func index
+0000901: 13 ; string length
+0000902: 6933 322e 7265 696e 7465 7270 7265 742f i32.reinterpret/
+0000912: 6633 32 f32 ; export name
+0000915: 00 ; export kind
+0000916: a301 ; export func index
+0000918: 13 ; string length
+0000919: 6633 322e 7265 696e 7465 7270 7265 742f f32.reinterpret/
+0000929: 6933 32 i32 ; export name
+000092c: 00 ; export kind
+000092d: a401 ; export func index
+000092f: 13 ; string length
+0000930: 6936 342e 7265 696e 7465 7270 7265 742f i64.reinterpret/
+0000940: 6636 34 f64 ; export name
+0000943: 00 ; export kind
+0000944: a501 ; export func index
+0000946: 13 ; string length
+0000947: 6636 342e 7265 696e 7465 7270 7265 742f f64.reinterpret/
+0000957: 6936 34 i64 ; export name
+000095a: 00 ; export kind
+000095b: a601 ; export func index
+000095d: 0d ; string length
+000095e: 6933 322e 6578 7465 6e64 385f 73 i32.extend8_s ; export name
+000096b: 00 ; export kind
+000096c: a701 ; export func index
+000096e: 0e ; string length
+000096f: 6933 322e 6578 7465 6e64 3136 5f73 i32.extend16_s ; export name
+000097d: 00 ; export kind
+000097e: a801 ; export func index
+0000980: 0d ; string length
+0000981: 6936 342e 6578 7465 6e64 385f 73 i64.extend8_s ; export name
+000098e: 00 ; export kind
+000098f: a901 ; export func index
+0000991: 0e ; string length
+0000992: 6936 342e 6578 7465 6e64 3136 5f73 i64.extend16_s ; export name
+00009a0: 00 ; export kind
+00009a1: aa01 ; export func index
+00009a3: 0e ; string length
+00009a4: 6936 342e 6578 7465 6e64 3332 5f73 i64.extend32_s ; export name
+00009b2: 00 ; export kind
+00009b3: ab01 ; export func index
+00009b5: 06 ; string length
+00009b6: 616c 6c6f 6361 alloca ; export name
+00009bc: 00 ; export kind
+00009bd: ac01 ; export func index
+00009bf: 09 ; string length
+00009c0: 6272 5f75 6e6c 6573 73 br_unless ; export name
+00009c9: 00 ; export kind
+00009ca: ad01 ; export func index
+00009cc: 09 ; string length
+00009cd: 6361 6c6c 5f68 6f73 74 call_host ; export name
+00009d6: 00 ; export kind
+00009d7: ae01 ; export func index
+00009d9: 04 ; string length
+00009da: 6461 7461 data ; export name
+00009de: 00 ; export kind
+00009df: af01 ; export func index
+00009e1: 09 ; string length
+00009e2: 6472 6f70 5f6b 6565 70 drop_keep ; export name
+00009eb: 00 ; export kind
+00009ec: b001 ; export func index
+00009ee: 13 ; string length
+00009ef: 6933 322e 7472 756e 635f 733a 7361 742f i32.trunc_s:sat/
+00009ff: 6633 32 f32 ; export name
+0000a02: 00 ; export kind
+0000a03: b101 ; export func index
+0000a05: 13 ; string length
+0000a06: 6933 322e 7472 756e 635f 753a 7361 742f i32.trunc_u:sat/
+0000a16: 6633 32 f32 ; export name
+0000a19: 00 ; export kind
+0000a1a: b201 ; export func index
+0000a1c: 13 ; string length
+0000a1d: 6933 322e 7472 756e 635f 733a 7361 742f i32.trunc_s:sat/
+0000a2d: 6636 34 f64 ; export name
+0000a30: 00 ; export kind
+0000a31: b301 ; export func index
+0000a33: 13 ; string length
+0000a34: 6933 322e 7472 756e 635f 753a 7361 742f i32.trunc_u:sat/
+0000a44: 6636 34 f64 ; export name
+0000a47: 00 ; export kind
+0000a48: b401 ; export func index
+0000a4a: 13 ; string length
+0000a4b: 6936 342e 7472 756e 635f 733a 7361 742f i64.trunc_s:sat/
+0000a5b: 6633 32 f32 ; export name
+0000a5e: 00 ; export kind
+0000a5f: b501 ; export func index
+0000a61: 13 ; string length
+0000a62: 6936 342e 7472 756e 635f 753a 7361 742f i64.trunc_u:sat/
+0000a72: 6633 32 f32 ; export name
+0000a75: 00 ; export kind
+0000a76: b601 ; export func index
+0000a78: 13 ; string length
+0000a79: 6936 342e 7472 756e 635f 733a 7361 742f i64.trunc_s:sat/
+0000a89: 6636 34 f64 ; export name
+0000a8c: 00 ; export kind
+0000a8d: b701 ; export func index
+0000a8f: 13 ; string length
+0000a90: 6936 342e 7472 756e 635f 753a 7361 742f i64.trunc_u:sat/
+0000aa0: 6636 34 f64 ; export name
+0000aa3: 00 ; export kind
+0000aa4: b801 ; export func index
+0000aa6: 0f ; string length
+0000aa7: 6933 322e 6174 6f6d 6963 2e6c 6f61 64 i32.atomic.load ; export name
+0000ab6: 00 ; export kind
+0000ab7: b901 ; export func index
+0000ab9: 0f ; string length
+0000aba: 6936 342e 6174 6f6d 6963 2e6c 6f61 64 i64.atomic.load ; export name
+0000ac9: 00 ; export kind
+0000aca: ba01 ; export func index
+0000acc: 12 ; string length
+0000acd: 6933 322e 6174 6f6d 6963 2e6c 6f61 6438 i32.atomic.load8
+0000add: 5f75 _u ; export name
+0000adf: 00 ; export kind
+0000ae0: bb01 ; export func index
+0000ae2: 13 ; string length
+0000ae3: 6933 322e 6174 6f6d 6963 2e6c 6f61 6431 i32.atomic.load1
+0000af3: 365f 75 6_u ; export name
+0000af6: 00 ; export kind
+0000af7: bc01 ; export func index
+0000af9: 12 ; string length
+0000afa: 6936 342e 6174 6f6d 6963 2e6c 6f61 6438 i64.atomic.load8
+0000b0a: 5f75 _u ; export name
+0000b0c: 00 ; export kind
+0000b0d: bd01 ; export func index
+0000b0f: 13 ; string length
+0000b10: 6936 342e 6174 6f6d 6963 2e6c 6f61 6431 i64.atomic.load1
+0000b20: 365f 75 6_u ; export name
+0000b23: 00 ; export kind
+0000b24: be01 ; export func index
+0000b26: 13 ; string length
+0000b27: 6936 342e 6174 6f6d 6963 2e6c 6f61 6433 i64.atomic.load3
+0000b37: 325f 75 2_u ; export name
+0000b3a: 00 ; export kind
+0000b3b: bf01 ; export func index
+0000b3d: 10 ; string length
+0000b3e: 6933 322e 6174 6f6d 6963 2e73 746f 7265 i32.atomic.store ; export name
+0000b4e: 00 ; export kind
+0000b4f: c001 ; export func index
+0000b51: 10 ; string length
+0000b52: 6936 342e 6174 6f6d 6963 2e73 746f 7265 i64.atomic.store ; export name
+0000b62: 00 ; export kind
+0000b63: c101 ; export func index
+0000b65: 11 ; string length
+0000b66: 6933 322e 6174 6f6d 6963 2e73 746f 7265 i32.atomic.store
+0000b76: 38 8 ; export name
+0000b77: 00 ; export kind
+0000b78: c201 ; export func index
+0000b7a: 12 ; string length
+0000b7b: 6933 322e 6174 6f6d 6963 2e73 746f 7265 i32.atomic.store
+0000b8b: 3136 16 ; export name
+0000b8d: 00 ; export kind
+0000b8e: c301 ; export func index
+0000b90: 11 ; string length
+0000b91: 6936 342e 6174 6f6d 6963 2e73 746f 7265 i64.atomic.store
+0000ba1: 38 8 ; export name
+0000ba2: 00 ; export kind
+0000ba3: c401 ; export func index
+0000ba5: 12 ; string length
+0000ba6: 6936 342e 6174 6f6d 6963 2e73 746f 7265 i64.atomic.store
+0000bb6: 3136 16 ; export name
+0000bb8: 00 ; export kind
+0000bb9: c501 ; export func index
+0000bbb: 12 ; string length
+0000bbc: 6936 342e 6174 6f6d 6963 2e73 746f 7265 i64.atomic.store
+0000bcc: 3332 32 ; export name
+0000bce: 00 ; export kind
+0000bcf: c601 ; export func index
+0000bd1: 12 ; string length
+0000bd2: 6933 322e 6174 6f6d 6963 2e72 6d77 2e61 i32.atomic.rmw.a
+0000be2: 6464 dd ; export name
+0000be4: 00 ; export kind
+0000be5: c701 ; export func index
+0000be7: 12 ; string length
+0000be8: 6936 342e 6174 6f6d 6963 2e72 6d77 2e61 i64.atomic.rmw.a
+0000bf8: 6464 dd ; export name
+0000bfa: 00 ; export kind
+0000bfb: c801 ; export func index
+0000bfd: 15 ; string length
+0000bfe: 6933 322e 6174 6f6d 6963 2e72 6d77 385f i32.atomic.rmw8_
+0000c0e: 752e 6164 64 u.add ; export name
+0000c13: 00 ; export kind
+0000c14: c901 ; export func index
+0000c16: 16 ; string length
+0000c17: 6933 322e 6174 6f6d 6963 2e72 6d77 3136 i32.atomic.rmw16
+0000c27: 5f75 2e61 6464 _u.add ; export name
+0000c2d: 00 ; export kind
+0000c2e: ca01 ; export func index
+0000c30: 15 ; string length
+0000c31: 6936 342e 6174 6f6d 6963 2e72 6d77 385f i64.atomic.rmw8_
+0000c41: 752e 6164 64 u.add ; export name
+0000c46: 00 ; export kind
+0000c47: cb01 ; export func index
+0000c49: 16 ; string length
+0000c4a: 6936 342e 6174 6f6d 6963 2e72 6d77 3136 i64.atomic.rmw16
+0000c5a: 5f75 2e61 6464 _u.add ; export name
+0000c60: 00 ; export kind
+0000c61: cc01 ; export func index
+0000c63: 16 ; string length
+0000c64: 6936 342e 6174 6f6d 6963 2e72 6d77 3332 i64.atomic.rmw32
+0000c74: 5f75 2e61 6464 _u.add ; export name
+0000c7a: 00 ; export kind
+0000c7b: cd01 ; export func index
+0000c7d: 12 ; string length
+0000c7e: 6933 322e 6174 6f6d 6963 2e72 6d77 2e73 i32.atomic.rmw.s
+0000c8e: 7562 ub ; export name
+0000c90: 00 ; export kind
+0000c91: ce01 ; export func index
+0000c93: 12 ; string length
+0000c94: 6936 342e 6174 6f6d 6963 2e72 6d77 2e73 i64.atomic.rmw.s
+0000ca4: 7562 ub ; export name
+0000ca6: 00 ; export kind
+0000ca7: cf01 ; export func index
+0000ca9: 15 ; string length
+0000caa: 6933 322e 6174 6f6d 6963 2e72 6d77 385f i32.atomic.rmw8_
+0000cba: 752e 7375 62 u.sub ; export name
+0000cbf: 00 ; export kind
+0000cc0: d001 ; export func index
+0000cc2: 16 ; string length
+0000cc3: 6933 322e 6174 6f6d 6963 2e72 6d77 3136 i32.atomic.rmw16
+0000cd3: 5f75 2e73 7562 _u.sub ; export name
+0000cd9: 00 ; export kind
+0000cda: d101 ; export func index
+0000cdc: 15 ; string length
+0000cdd: 6936 342e 6174 6f6d 6963 2e72 6d77 385f i64.atomic.rmw8_
+0000ced: 752e 7375 62 u.sub ; export name
+0000cf2: 00 ; export kind
+0000cf3: d201 ; export func index
+0000cf5: 16 ; string length
+0000cf6: 6936 342e 6174 6f6d 6963 2e72 6d77 3136 i64.atomic.rmw16
+0000d06: 5f75 2e73 7562 _u.sub ; export name
+0000d0c: 00 ; export kind
+0000d0d: d301 ; export func index
+0000d0f: 16 ; string length
+0000d10: 6936 342e 6174 6f6d 6963 2e72 6d77 3332 i64.atomic.rmw32
+0000d20: 5f75 2e73 7562 _u.sub ; export name
+0000d26: 00 ; export kind
+0000d27: d401 ; export func index
+0000d29: 12 ; string length
+0000d2a: 6933 322e 6174 6f6d 6963 2e72 6d77 2e61 i32.atomic.rmw.a
+0000d3a: 6e64 nd ; export name
+0000d3c: 00 ; export kind
+0000d3d: d501 ; export func index
+0000d3f: 12 ; string length
+0000d40: 6936 342e 6174 6f6d 6963 2e72 6d77 2e61 i64.atomic.rmw.a
+0000d50: 6e64 nd ; export name
+0000d52: 00 ; export kind
+0000d53: d601 ; export func index
+0000d55: 15 ; string length
+0000d56: 6933 322e 6174 6f6d 6963 2e72 6d77 385f i32.atomic.rmw8_
+0000d66: 752e 616e 64 u.and ; export name
+0000d6b: 00 ; export kind
+0000d6c: d701 ; export func index
+0000d6e: 16 ; string length
+0000d6f: 6933 322e 6174 6f6d 6963 2e72 6d77 3136 i32.atomic.rmw16
+0000d7f: 5f75 2e61 6e64 _u.and ; export name
+0000d85: 00 ; export kind
+0000d86: d801 ; export func index
+0000d88: 15 ; string length
+0000d89: 6936 342e 6174 6f6d 6963 2e72 6d77 385f i64.atomic.rmw8_
+0000d99: 752e 616e 64 u.and ; export name
+0000d9e: 00 ; export kind
+0000d9f: d901 ; export func index
+0000da1: 16 ; string length
+0000da2: 6936 342e 6174 6f6d 6963 2e72 6d77 3136 i64.atomic.rmw16
+0000db2: 5f75 2e61 6e64 _u.and ; export name
+0000db8: 00 ; export kind
+0000db9: da01 ; export func index
+0000dbb: 16 ; string length
+0000dbc: 6936 342e 6174 6f6d 6963 2e72 6d77 3332 i64.atomic.rmw32
+0000dcc: 5f75 2e61 6e64 _u.and ; export name
+0000dd2: 00 ; export kind
+0000dd3: db01 ; export func index
+0000dd5: 11 ; string length
+0000dd6: 6933 322e 6174 6f6d 6963 2e72 6d77 2e6f i32.atomic.rmw.o
+0000de6: 72 r ; export name
+0000de7: 00 ; export kind
+0000de8: dc01 ; export func index
+0000dea: 11 ; string length
+0000deb: 6936 342e 6174 6f6d 6963 2e72 6d77 2e6f i64.atomic.rmw.o
+0000dfb: 72 r ; export name
+0000dfc: 00 ; export kind
+0000dfd: dd01 ; export func index
+0000dff: 14 ; string length
+0000e00: 6933 322e 6174 6f6d 6963 2e72 6d77 385f i32.atomic.rmw8_
+0000e10: 752e 6f72 u.or ; export name
+0000e14: 00 ; export kind
+0000e15: de01 ; export func index
+0000e17: 15 ; string length
+0000e18: 6933 322e 6174 6f6d 6963 2e72 6d77 3136 i32.atomic.rmw16
+0000e28: 5f75 2e6f 72 _u.or ; export name
+0000e2d: 00 ; export kind
+0000e2e: df01 ; export func index
+0000e30: 14 ; string length
+0000e31: 6936 342e 6174 6f6d 6963 2e72 6d77 385f i64.atomic.rmw8_
+0000e41: 752e 6f72 u.or ; export name
+0000e45: 00 ; export kind
+0000e46: e001 ; export func index
+0000e48: 15 ; string length
+0000e49: 6936 342e 6174 6f6d 6963 2e72 6d77 3136 i64.atomic.rmw16
+0000e59: 5f75 2e6f 72 _u.or ; export name
+0000e5e: 00 ; export kind
+0000e5f: e101 ; export func index
+0000e61: 15 ; string length
+0000e62: 6936 342e 6174 6f6d 6963 2e72 6d77 3332 i64.atomic.rmw32
+0000e72: 5f75 2e6f 72 _u.or ; export name
+0000e77: 00 ; export kind
+0000e78: e201 ; export func index
+0000e7a: 12 ; string length
+0000e7b: 6933 322e 6174 6f6d 6963 2e72 6d77 2e78 i32.atomic.rmw.x
+0000e8b: 6f72 or ; export name
+0000e8d: 00 ; export kind
+0000e8e: e301 ; export func index
+0000e90: 12 ; string length
+0000e91: 6936 342e 6174 6f6d 6963 2e72 6d77 2e78 i64.atomic.rmw.x
+0000ea1: 6f72 or ; export name
+0000ea3: 00 ; export kind
+0000ea4: e401 ; export func index
+0000ea6: 15 ; string length
+0000ea7: 6933 322e 6174 6f6d 6963 2e72 6d77 385f i32.atomic.rmw8_
+0000eb7: 752e 786f 72 u.xor ; export name
+0000ebc: 00 ; export kind
+0000ebd: e501 ; export func index
+0000ebf: 16 ; string length
+0000ec0: 6933 322e 6174 6f6d 6963 2e72 6d77 3136 i32.atomic.rmw16
+0000ed0: 5f75 2e78 6f72 _u.xor ; export name
+0000ed6: 00 ; export kind
+0000ed7: e601 ; export func index
+0000ed9: 15 ; string length
+0000eda: 6936 342e 6174 6f6d 6963 2e72 6d77 385f i64.atomic.rmw8_
+0000eea: 752e 786f 72 u.xor ; export name
+0000eef: 00 ; export kind
+0000ef0: e701 ; export func index
+0000ef2: 16 ; string length
+0000ef3: 6936 342e 6174 6f6d 6963 2e72 6d77 3136 i64.atomic.rmw16
+0000f03: 5f75 2e78 6f72 _u.xor ; export name
+0000f09: 00 ; export kind
+0000f0a: e801 ; export func index
+0000f0c: 16 ; string length
+0000f0d: 6936 342e 6174 6f6d 6963 2e72 6d77 3332 i64.atomic.rmw32
+0000f1d: 5f75 2e78 6f72 _u.xor ; export name
+0000f23: 00 ; export kind
+0000f24: e901 ; export func index
+0000f26: 13 ; string length
+0000f27: 6933 322e 6174 6f6d 6963 2e72 6d77 2e78 i32.atomic.rmw.x
+0000f37: 6368 67 chg ; export name
+0000f3a: 00 ; export kind
+0000f3b: ea01 ; export func index
+0000f3d: 13 ; string length
+0000f3e: 6936 342e 6174 6f6d 6963 2e72 6d77 2e78 i64.atomic.rmw.x
+0000f4e: 6368 67 chg ; export name
+0000f51: 00 ; export kind
+0000f52: eb01 ; export func index
+0000f54: 16 ; string length
+0000f55: 6933 322e 6174 6f6d 6963 2e72 6d77 385f i32.atomic.rmw8_
+0000f65: 752e 7863 6867 u.xchg ; export name
+0000f6b: 00 ; export kind
+0000f6c: ec01 ; export func index
+0000f6e: 17 ; string length
+0000f6f: 6933 322e 6174 6f6d 6963 2e72 6d77 3136 i32.atomic.rmw16
+0000f7f: 5f75 2e78 6368 67 _u.xchg ; export name
+0000f86: 00 ; export kind
+0000f87: ed01 ; export func index
+0000f89: 16 ; string length
+0000f8a: 6936 342e 6174 6f6d 6963 2e72 6d77 385f i64.atomic.rmw8_
+0000f9a: 752e 7863 6867 u.xchg ; export name
+0000fa0: 00 ; export kind
+0000fa1: ee01 ; export func index
+0000fa3: 17 ; string length
+0000fa4: 6936 342e 6174 6f6d 6963 2e72 6d77 3136 i64.atomic.rmw16
+0000fb4: 5f75 2e78 6368 67 _u.xchg ; export name
+0000fbb: 00 ; export kind
+0000fbc: ef01 ; export func index
+0000fbe: 17 ; string length
+0000fbf: 6936 342e 6174 6f6d 6963 2e72 6d77 3332 i64.atomic.rmw32
+0000fcf: 5f75 2e78 6368 67 _u.xchg ; export name
+0000fd6: 00 ; export kind
+0000fd7: f001 ; export func index
+0000fd9: 16 ; string length
+0000fda: 6933 322e 6174 6f6d 6963 2e72 6d77 2e63 i32.atomic.rmw.c
+0000fea: 6d70 7863 6867 mpxchg ; export name
+0000ff0: 00 ; export kind
+0000ff1: f101 ; export func index
+0000ff3: 16 ; string length
+0000ff4: 6936 342e 6174 6f6d 6963 2e72 6d77 2e63 i64.atomic.rmw.c
+0001004: 6d70 7863 6867 mpxchg ; export name
+000100a: 00 ; export kind
+000100b: f201 ; export func index
+000100d: 19 ; string length
+000100e: 6933 322e 6174 6f6d 6963 2e72 6d77 385f i32.atomic.rmw8_
+000101e: 752e 636d 7078 6368 67 u.cmpxchg ; export name
+0001027: 00 ; export kind
+0001028: f301 ; export func index
+000102a: 1a ; string length
+000102b: 6933 322e 6174 6f6d 6963 2e72 6d77 3136 i32.atomic.rmw16
+000103b: 5f75 2e63 6d70 7863 6867 _u.cmpxchg ; export name
+0001045: 00 ; export kind
+0001046: f401 ; export func index
+0001048: 19 ; string length
+0001049: 6936 342e 6174 6f6d 6963 2e72 6d77 385f i64.atomic.rmw8_
+0001059: 752e 636d 7078 6368 67 u.cmpxchg ; export name
+0001062: 00 ; export kind
+0001063: f501 ; export func index
+0001065: 1a ; string length
+0001066: 6936 342e 6174 6f6d 6963 2e72 6d77 3136 i64.atomic.rmw16
+0001076: 5f75 2e63 6d70 7863 6867 _u.cmpxchg ; export name
+0001080: 00 ; export kind
+0001081: f601 ; export func index
+0001083: 1a ; string length
+0001084: 6936 342e 6174 6f6d 6963 2e72 6d77 3332 i64.atomic.rmw32
+0001094: 5f75 2e63 6d70 7863 6867 _u.cmpxchg ; export name
+000109e: 00 ; export kind
+000109f: f701 ; export func index
+; move data: [135, 10a1) -> [136, 10a2)
+0000134: ec1e ; FIXUP section size
; section "Elem" (9)
-00010a6: 09 ; section code
-00010a7: 00 ; section size (guess)
-00010a8: 01 ; num elem segments
+00010a2: 09 ; section code
+00010a3: 00 ; section size (guess)
+00010a4: 01 ; num elem segments
; elem segment header 0
-00010a9: 00 ; table index
-00010aa: 41 ; i32.const
-00010ab: 00 ; i32 literal
-00010ac: 0b ; end
-00010ad: 02 ; num function indices
-00010ae: 01 ; function index
-00010af: 01 ; function index
-00010a7: 08 ; FIXUP section size
+00010a5: 00 ; table index
+00010a6: 41 ; i32.const
+00010a7: 00 ; i32 literal
+00010a8: 0b ; end
+00010a9: 02 ; num function indices
+00010aa: 01 ; function index
+00010ab: 01 ; function index
+00010a3: 08 ; FIXUP section size
; section "Code" (10)
-00010b0: 0a ; section code
-00010b1: 00 ; section size (guess)
-00010b2: f701 ; num functions
+00010ac: 0a ; section code
+00010ad: 00 ; section size (guess)
+00010ae: f701 ; num functions
; function body 0
-00010b4: 00 ; func body size (guess)
-00010b5: 00 ; local decl count
-00010b6: 0b ; end
-00010b4: 02 ; FIXUP func body size
+00010b0: 00 ; func body size (guess)
+00010b1: 00 ; local decl count
+00010b2: 0b ; end
+00010b0: 02 ; FIXUP func body size
; function body 1
+00010b3: 00 ; func body size (guess)
+00010b4: 00 ; local decl count
+00010b5: 00 ; unreachable
+00010b6: 0b ; end
+00010b3: 03 ; FIXUP func body size
+; function body 2
00010b7: 00 ; func body size (guess)
00010b8: 00 ; local decl count
-00010b9: 00 ; unreachable
-00010ba: 0b ; end
-00010b7: 03 ; FIXUP func body size
-; function body 2
-00010bb: 00 ; func body size (guess)
-00010bc: 00 ; local decl count
-00010bd: 0c ; br
-00010be: 00 ; break depth
-00010bf: 0b ; end
-00010bb: 04 ; FIXUP func body size
+00010b9: 0c ; br
+00010ba: 00 ; break depth
+00010bb: 0b ; end
+00010b7: 04 ; FIXUP func body size
; function body 3
-00010c0: 00 ; func body size (guess)
-00010c1: 00 ; local decl count
-00010c2: 41 ; i32.const
-00010c3: 01 ; i32 literal
-00010c4: 0e ; br_table
-00010c5: 00 ; num targets
-00010c6: 00 ; break depth for default
-00010c7: 0b ; end
-00010c0: 07 ; FIXUP func body size
+00010bc: 00 ; func body size (guess)
+00010bd: 00 ; local decl count
+00010be: 41 ; i32.const
+00010bf: 01 ; i32 literal
+00010c0: 0e ; br_table
+00010c1: 00 ; num targets
+00010c2: 00 ; break depth for default
+00010c3: 0b ; end
+00010bc: 07 ; FIXUP func body size
; function body 4
+00010c4: 00 ; func body size (guess)
+00010c5: 00 ; local decl count
+00010c6: 0f ; return
+00010c7: 0b ; end
+00010c4: 03 ; FIXUP func body size
+; function body 5
00010c8: 00 ; func body size (guess)
00010c9: 00 ; local decl count
-00010ca: 0f ; return
-00010cb: 0b ; end
-00010c8: 03 ; FIXUP func body size
-; function body 5
-00010cc: 00 ; func body size (guess)
-00010cd: 00 ; local decl count
-00010ce: 10 ; call
-00010cf: 01 ; function index
-00010d0: 0b ; end
-00010cc: 04 ; FIXUP func body size
+00010ca: 10 ; call
+00010cb: 01 ; function index
+00010cc: 0b ; end
+00010c8: 04 ; FIXUP func body size
; function body 6
-00010d1: 00 ; func body size (guess)
-00010d2: 00 ; local decl count
-00010d3: 41 ; i32.const
-00010d4: 01 ; i32 literal
-00010d5: 11 ; call_indirect
-00010d6: 00 ; signature index
-00010d7: 00 ; call_indirect reserved
-00010d8: 0b ; end
-00010d1: 07 ; FIXUP func body size
+00010cd: 00 ; func body size (guess)
+00010ce: 00 ; local decl count
+00010cf: 41 ; i32.const
+00010d0: 01 ; i32 literal
+00010d1: 11 ; call_indirect
+00010d2: 00 ; signature index
+00010d3: 00 ; call_indirect reserved
+00010d4: 0b ; end
+00010cd: 07 ; FIXUP func body size
; function body 7
-00010d9: 00 ; func body size (guess)
-00010da: 00 ; local decl count
-00010db: 41 ; i32.const
-00010dc: 01 ; i32 literal
-00010dd: 1a ; drop
-00010de: 0b ; end
-00010d9: 05 ; FIXUP func body size
+00010d5: 00 ; func body size (guess)
+00010d6: 00 ; local decl count
+00010d7: 41 ; i32.const
+00010d8: 01 ; i32 literal
+00010d9: 1a ; drop
+00010da: 0b ; end
+00010d5: 05 ; FIXUP func body size
; function body 8
-00010df: 00 ; func body size (guess)
-00010e0: 00 ; local decl count
+00010db: 00 ; func body size (guess)
+00010dc: 00 ; local decl count
+00010dd: 41 ; i32.const
+00010de: 01 ; i32 literal
+00010df: 41 ; i32.const
+00010e0: 02 ; i32 literal
00010e1: 41 ; i32.const
-00010e2: 01 ; i32 literal
-00010e3: 41 ; i32.const
-00010e4: 02 ; i32 literal
-00010e5: 41 ; i32.const
-00010e6: 03 ; i32 literal
-00010e7: 1b ; select
-00010e8: 1a ; drop
-00010e9: 0b ; end
-00010df: 0a ; FIXUP func body size
+00010e2: 03 ; i32 literal
+00010e3: 1b ; select
+00010e4: 1a ; drop
+00010e5: 0b ; end
+00010db: 0a ; FIXUP func body size
; function body 9
-00010ea: 00 ; func body size (guess)
-00010eb: 01 ; local decl count
-00010ec: 01 ; local type count
-00010ed: 7f ; i32
-00010ee: 20 ; get_local
-00010ef: 00 ; local index
-00010f0: 1a ; drop
-00010f1: 0b ; end
-00010ea: 07 ; FIXUP func body size
+00010e6: 00 ; func body size (guess)
+00010e7: 01 ; local decl count
+00010e8: 01 ; local type count
+00010e9: 7f ; i32
+00010ea: 20 ; get_local
+00010eb: 00 ; local index
+00010ec: 1a ; drop
+00010ed: 0b ; end
+00010e6: 07 ; FIXUP func body size
; function body 10
-00010f2: 00 ; func body size (guess)
-00010f3: 01 ; local decl count
-00010f4: 01 ; local type count
-00010f5: 7f ; i32
-00010f6: 41 ; i32.const
-00010f7: 01 ; i32 literal
-00010f8: 21 ; set_local
-00010f9: 00 ; local index
-00010fa: 0b ; end
-00010f2: 08 ; FIXUP func body size
+00010ee: 00 ; func body size (guess)
+00010ef: 01 ; local decl count
+00010f0: 01 ; local type count
+00010f1: 7f ; i32
+00010f2: 41 ; i32.const
+00010f3: 01 ; i32 literal
+00010f4: 21 ; set_local
+00010f5: 00 ; local index
+00010f6: 0b ; end
+00010ee: 08 ; FIXUP func body size
; function body 11
-00010fb: 00 ; func body size (guess)
-00010fc: 01 ; local decl count
-00010fd: 01 ; local type count
-00010fe: 7f ; i32
-00010ff: 41 ; i32.const
-0001100: 01 ; i32 literal
-0001101: 22 ; tee_local
-0001102: 00 ; local index
-0001103: 1a ; drop
-0001104: 0b ; end
-00010fb: 09 ; FIXUP func body size
+00010f7: 00 ; func body size (guess)
+00010f8: 01 ; local decl count
+00010f9: 01 ; local type count
+00010fa: 7f ; i32
+00010fb: 41 ; i32.const
+00010fc: 01 ; i32 literal
+00010fd: 22 ; tee_local
+00010fe: 00 ; local index
+00010ff: 1a ; drop
+0001100: 0b ; end
+00010f7: 09 ; FIXUP func body size
; function body 12
-0001105: 00 ; func body size (guess)
-0001106: 00 ; local decl count
-0001107: 23 ; get_global
-0001108: 00 ; global index
-0001109: 1a ; drop
-000110a: 0b ; end
-0001105: 05 ; FIXUP func body size
+0001101: 00 ; func body size (guess)
+0001102: 00 ; local decl count
+0001103: 23 ; get_global
+0001104: 00 ; global index
+0001105: 1a ; drop
+0001106: 0b ; end
+0001101: 05 ; FIXUP func body size
; function body 13
-000110b: 00 ; func body size (guess)
-000110c: 00 ; local decl count
-000110d: 41 ; i32.const
-000110e: 01 ; i32 literal
-000110f: 24 ; set_global
-0001110: 00 ; global index
-0001111: 0b ; end
-000110b: 06 ; FIXUP func body size
+0001107: 00 ; func body size (guess)
+0001108: 00 ; local decl count
+0001109: 41 ; i32.const
+000110a: 01 ; i32 literal
+000110b: 24 ; set_global
+000110c: 00 ; global index
+000110d: 0b ; end
+0001107: 06 ; FIXUP func body size
; function body 14
-0001112: 00 ; func body size (guess)
-0001113: 00 ; local decl count
-0001114: 41 ; i32.const
-0001115: 01 ; i32 literal
-0001116: 28 ; i32.load
-0001117: 02 ; alignment
-0001118: 02 ; load offset
-0001119: 1a ; drop
-000111a: 0b ; end
-0001112: 08 ; FIXUP func body size
+000110e: 00 ; func body size (guess)
+000110f: 00 ; local decl count
+0001110: 41 ; i32.const
+0001111: 01 ; i32 literal
+0001112: 28 ; i32.load
+0001113: 02 ; alignment
+0001114: 02 ; load offset
+0001115: 1a ; drop
+0001116: 0b ; end
+000110e: 08 ; FIXUP func body size
; function body 15
-000111b: 00 ; func body size (guess)
-000111c: 00 ; local decl count
-000111d: 41 ; i32.const
-000111e: 01 ; i32 literal
-000111f: 29 ; i64.load
-0001120: 03 ; alignment
-0001121: 02 ; load offset
-0001122: 1a ; drop
-0001123: 0b ; end
-000111b: 08 ; FIXUP func body size
+0001117: 00 ; func body size (guess)
+0001118: 00 ; local decl count
+0001119: 41 ; i32.const
+000111a: 01 ; i32 literal
+000111b: 29 ; i64.load
+000111c: 03 ; alignment
+000111d: 02 ; load offset
+000111e: 1a ; drop
+000111f: 0b ; end
+0001117: 08 ; FIXUP func body size
; function body 16
-0001124: 00 ; func body size (guess)
-0001125: 00 ; local decl count
-0001126: 41 ; i32.const
-0001127: 01 ; i32 literal
-0001128: 2a ; f32.load
-0001129: 02 ; alignment
-000112a: 02 ; load offset
-000112b: 1a ; drop
-000112c: 0b ; end
-0001124: 08 ; FIXUP func body size
+0001120: 00 ; func body size (guess)
+0001121: 00 ; local decl count
+0001122: 41 ; i32.const
+0001123: 01 ; i32 literal
+0001124: 2a ; f32.load
+0001125: 02 ; alignment
+0001126: 02 ; load offset
+0001127: 1a ; drop
+0001128: 0b ; end
+0001120: 08 ; FIXUP func body size
; function body 17
-000112d: 00 ; func body size (guess)
-000112e: 00 ; local decl count
-000112f: 41 ; i32.const
-0001130: 01 ; i32 literal
-0001131: 2b ; f64.load
-0001132: 03 ; alignment
-0001133: 02 ; load offset
-0001134: 1a ; drop
-0001135: 0b ; end
-000112d: 08 ; FIXUP func body size
+0001129: 00 ; func body size (guess)
+000112a: 00 ; local decl count
+000112b: 41 ; i32.const
+000112c: 01 ; i32 literal
+000112d: 2b ; f64.load
+000112e: 03 ; alignment
+000112f: 02 ; load offset
+0001130: 1a ; drop
+0001131: 0b ; end
+0001129: 08 ; FIXUP func body size
; function body 18
-0001136: 00 ; func body size (guess)
-0001137: 00 ; local decl count
-0001138: 41 ; i32.const
-0001139: 01 ; i32 literal
-000113a: 2c ; i32.load8_s
-000113b: 00 ; alignment
-000113c: 02 ; load offset
-000113d: 1a ; drop
-000113e: 0b ; end
-0001136: 08 ; FIXUP func body size
+0001132: 00 ; func body size (guess)
+0001133: 00 ; local decl count
+0001134: 41 ; i32.const
+0001135: 01 ; i32 literal
+0001136: 2c ; i32.load8_s
+0001137: 00 ; alignment
+0001138: 02 ; load offset
+0001139: 1a ; drop
+000113a: 0b ; end
+0001132: 08 ; FIXUP func body size
; function body 19
-000113f: 00 ; func body size (guess)
-0001140: 00 ; local decl count
-0001141: 41 ; i32.const
-0001142: 01 ; i32 literal
-0001143: 2d ; i32.load8_u
-0001144: 00 ; alignment
-0001145: 02 ; load offset
-0001146: 1a ; drop
-0001147: 0b ; end
-000113f: 08 ; FIXUP func body size
+000113b: 00 ; func body size (guess)
+000113c: 00 ; local decl count
+000113d: 41 ; i32.const
+000113e: 01 ; i32 literal
+000113f: 2d ; i32.load8_u
+0001140: 00 ; alignment
+0001141: 02 ; load offset
+0001142: 1a ; drop
+0001143: 0b ; end
+000113b: 08 ; FIXUP func body size
; function body 20
-0001148: 00 ; func body size (guess)
-0001149: 00 ; local decl count
-000114a: 41 ; i32.const
-000114b: 01 ; i32 literal
-000114c: 2e ; i32.load16_s
-000114d: 01 ; alignment
-000114e: 02 ; load offset
-000114f: 1a ; drop
-0001150: 0b ; end
-0001148: 08 ; FIXUP func body size
+0001144: 00 ; func body size (guess)
+0001145: 00 ; local decl count
+0001146: 41 ; i32.const
+0001147: 01 ; i32 literal
+0001148: 2e ; i32.load16_s
+0001149: 01 ; alignment
+000114a: 02 ; load offset
+000114b: 1a ; drop
+000114c: 0b ; end
+0001144: 08 ; FIXUP func body size
; function body 21
-0001151: 00 ; func body size (guess)
-0001152: 00 ; local decl count
-0001153: 41 ; i32.const
-0001154: 01 ; i32 literal
-0001155: 2f ; i32.load16_u
-0001156: 01 ; alignment
-0001157: 02 ; load offset
-0001158: 1a ; drop
-0001159: 0b ; end
-0001151: 08 ; FIXUP func body size
+000114d: 00 ; func body size (guess)
+000114e: 00 ; local decl count
+000114f: 41 ; i32.const
+0001150: 01 ; i32 literal
+0001151: 2f ; i32.load16_u
+0001152: 01 ; alignment
+0001153: 02 ; load offset
+0001154: 1a ; drop
+0001155: 0b ; end
+000114d: 08 ; FIXUP func body size
; function body 22
-000115a: 00 ; func body size (guess)
-000115b: 00 ; local decl count
-000115c: 41 ; i32.const
-000115d: 01 ; i32 literal
-000115e: 30 ; i64.load8_s
-000115f: 00 ; alignment
-0001160: 02 ; load offset
-0001161: 1a ; drop
-0001162: 0b ; end
-000115a: 08 ; FIXUP func body size
+0001156: 00 ; func body size (guess)
+0001157: 00 ; local decl count
+0001158: 41 ; i32.const
+0001159: 01 ; i32 literal
+000115a: 30 ; i64.load8_s
+000115b: 00 ; alignment
+000115c: 02 ; load offset
+000115d: 1a ; drop
+000115e: 0b ; end
+0001156: 08 ; FIXUP func body size
; function body 23
-0001163: 00 ; func body size (guess)
-0001164: 00 ; local decl count
-0001165: 41 ; i32.const
-0001166: 01 ; i32 literal
-0001167: 31 ; i64.load8_u
-0001168: 00 ; alignment
-0001169: 02 ; load offset
-000116a: 1a ; drop
-000116b: 0b ; end
-0001163: 08 ; FIXUP func body size
+000115f: 00 ; func body size (guess)
+0001160: 00 ; local decl count
+0001161: 41 ; i32.const
+0001162: 01 ; i32 literal
+0001163: 31 ; i64.load8_u
+0001164: 00 ; alignment
+0001165: 02 ; load offset
+0001166: 1a ; drop
+0001167: 0b ; end
+000115f: 08 ; FIXUP func body size
; function body 24
-000116c: 00 ; func body size (guess)
-000116d: 00 ; local decl count
-000116e: 41 ; i32.const
-000116f: 01 ; i32 literal
-0001170: 32 ; i64.load16_s
-0001171: 01 ; alignment
-0001172: 02 ; load offset
-0001173: 1a ; drop
-0001174: 0b ; end
-000116c: 08 ; FIXUP func body size
+0001168: 00 ; func body size (guess)
+0001169: 00 ; local decl count
+000116a: 41 ; i32.const
+000116b: 01 ; i32 literal
+000116c: 32 ; i64.load16_s
+000116d: 01 ; alignment
+000116e: 02 ; load offset
+000116f: 1a ; drop
+0001170: 0b ; end
+0001168: 08 ; FIXUP func body size
; function body 25
-0001175: 00 ; func body size (guess)
-0001176: 00 ; local decl count
-0001177: 41 ; i32.const
-0001178: 01 ; i32 literal
-0001179: 33 ; i64.load16_u
-000117a: 01 ; alignment
-000117b: 02 ; load offset
-000117c: 1a ; drop
-000117d: 0b ; end
-0001175: 08 ; FIXUP func body size
+0001171: 00 ; func body size (guess)
+0001172: 00 ; local decl count
+0001173: 41 ; i32.const
+0001174: 01 ; i32 literal
+0001175: 33 ; i64.load16_u
+0001176: 01 ; alignment
+0001177: 02 ; load offset
+0001178: 1a ; drop
+0001179: 0b ; end
+0001171: 08 ; FIXUP func body size
; function body 26
-000117e: 00 ; func body size (guess)
-000117f: 00 ; local decl count
-0001180: 41 ; i32.const
-0001181: 01 ; i32 literal
-0001182: 34 ; i64.load32_s
-0001183: 02 ; alignment
-0001184: 02 ; load offset
-0001185: 1a ; drop
-0001186: 0b ; end
-000117e: 08 ; FIXUP func body size
+000117a: 00 ; func body size (guess)
+000117b: 00 ; local decl count
+000117c: 41 ; i32.const
+000117d: 01 ; i32 literal
+000117e: 34 ; i64.load32_s
+000117f: 02 ; alignment
+0001180: 02 ; load offset
+0001181: 1a ; drop
+0001182: 0b ; end
+000117a: 08 ; FIXUP func body size
; function body 27
-0001187: 00 ; func body size (guess)
-0001188: 00 ; local decl count
-0001189: 41 ; i32.const
-000118a: 01 ; i32 literal
-000118b: 35 ; i64.load32_u
-000118c: 02 ; alignment
-000118d: 02 ; load offset
-000118e: 1a ; drop
-000118f: 0b ; end
-0001187: 08 ; FIXUP func body size
+0001183: 00 ; func body size (guess)
+0001184: 00 ; local decl count
+0001185: 41 ; i32.const
+0001186: 01 ; i32 literal
+0001187: 35 ; i64.load32_u
+0001188: 02 ; alignment
+0001189: 02 ; load offset
+000118a: 1a ; drop
+000118b: 0b ; end
+0001183: 08 ; FIXUP func body size
; function body 28
-0001190: 00 ; func body size (guess)
-0001191: 00 ; local decl count
-0001192: 41 ; i32.const
-0001193: 01 ; i32 literal
-0001194: 41 ; i32.const
-0001195: 02 ; i32 literal
-0001196: 36 ; i32.store
-0001197: 02 ; alignment
-0001198: 02 ; store offset
-0001199: 0b ; end
-0001190: 09 ; FIXUP func body size
+000118c: 00 ; func body size (guess)
+000118d: 00 ; local decl count
+000118e: 41 ; i32.const
+000118f: 01 ; i32 literal
+0001190: 41 ; i32.const
+0001191: 02 ; i32 literal
+0001192: 36 ; i32.store
+0001193: 02 ; alignment
+0001194: 02 ; store offset
+0001195: 0b ; end
+000118c: 09 ; FIXUP func body size
; function body 29
-000119a: 00 ; func body size (guess)
-000119b: 00 ; local decl count
-000119c: 41 ; i32.const
-000119d: 01 ; i32 literal
-000119e: 42 ; i64.const
-000119f: 02 ; i64 literal
-00011a0: 37 ; i64.store
-00011a1: 03 ; alignment
-00011a2: 02 ; store offset
-00011a3: 0b ; end
-000119a: 09 ; FIXUP func body size
+0001196: 00 ; func body size (guess)
+0001197: 00 ; local decl count
+0001198: 41 ; i32.const
+0001199: 01 ; i32 literal
+000119a: 42 ; i64.const
+000119b: 02 ; i64 literal
+000119c: 37 ; i64.store
+000119d: 03 ; alignment
+000119e: 02 ; store offset
+000119f: 0b ; end
+0001196: 09 ; FIXUP func body size
; function body 30
-00011a4: 00 ; func body size (guess)
-00011a5: 00 ; local decl count
-00011a6: 41 ; i32.const
-00011a7: 01 ; i32 literal
-00011a8: 43 ; f32.const
-00011a9: 0000 0040 ; f32 literal
-00011ad: 38 ; f32.store
-00011ae: 02 ; alignment
-00011af: 02 ; store offset
-00011b0: 0b ; end
-00011a4: 0c ; FIXUP func body size
+00011a0: 00 ; func body size (guess)
+00011a1: 00 ; local decl count
+00011a2: 41 ; i32.const
+00011a3: 01 ; i32 literal
+00011a4: 43 ; f32.const
+00011a5: 0000 0040 ; f32 literal
+00011a9: 38 ; f32.store
+00011aa: 02 ; alignment
+00011ab: 02 ; store offset
+00011ac: 0b ; end
+00011a0: 0c ; FIXUP func body size
; function body 31
-00011b1: 00 ; func body size (guess)
-00011b2: 00 ; local decl count
-00011b3: 41 ; i32.const
-00011b4: 01 ; i32 literal
-00011b5: 44 ; f64.const
-00011b6: 0000 0000 0000 0040 ; f64 literal
-00011be: 39 ; f64.store
-00011bf: 03 ; alignment
-00011c0: 02 ; store offset
-00011c1: 0b ; end
-00011b1: 10 ; FIXUP func body size
+00011ad: 00 ; func body size (guess)
+00011ae: 00 ; local decl count
+00011af: 41 ; i32.const
+00011b0: 01 ; i32 literal
+00011b1: 44 ; f64.const
+00011b2: 0000 0000 0000 0040 ; f64 literal
+00011ba: 39 ; f64.store
+00011bb: 03 ; alignment
+00011bc: 02 ; store offset
+00011bd: 0b ; end
+00011ad: 10 ; FIXUP func body size
; function body 32
-00011c2: 00 ; func body size (guess)
-00011c3: 00 ; local decl count
-00011c4: 41 ; i32.const
-00011c5: 01 ; i32 literal
-00011c6: 41 ; i32.const
-00011c7: 02 ; i32 literal
-00011c8: 3a ; i32.store8
-00011c9: 00 ; alignment
-00011ca: 02 ; store offset
-00011cb: 0b ; end
-00011c2: 09 ; FIXUP func body size
+00011be: 00 ; func body size (guess)
+00011bf: 00 ; local decl count
+00011c0: 41 ; i32.const
+00011c1: 01 ; i32 literal
+00011c2: 41 ; i32.const
+00011c3: 02 ; i32 literal
+00011c4: 3a ; i32.store8
+00011c5: 00 ; alignment
+00011c6: 02 ; store offset
+00011c7: 0b ; end
+00011be: 09 ; FIXUP func body size
; function body 33
-00011cc: 00 ; func body size (guess)
-00011cd: 00 ; local decl count
-00011ce: 41 ; i32.const
-00011cf: 01 ; i32 literal
-00011d0: 41 ; i32.const
-00011d1: 02 ; i32 literal
-00011d2: 3b ; i32.store16
-00011d3: 01 ; alignment
-00011d4: 02 ; store offset
-00011d5: 0b ; end
-00011cc: 09 ; FIXUP func body size
+00011c8: 00 ; func body size (guess)
+00011c9: 00 ; local decl count
+00011ca: 41 ; i32.const
+00011cb: 01 ; i32 literal
+00011cc: 41 ; i32.const
+00011cd: 02 ; i32 literal
+00011ce: 3b ; i32.store16
+00011cf: 01 ; alignment
+00011d0: 02 ; store offset
+00011d1: 0b ; end
+00011c8: 09 ; FIXUP func body size
; function body 34
-00011d6: 00 ; func body size (guess)
-00011d7: 00 ; local decl count
-00011d8: 41 ; i32.const
-00011d9: 01 ; i32 literal
-00011da: 42 ; i64.const
-00011db: 02 ; i64 literal
-00011dc: 3c ; i64.store8
-00011dd: 00 ; alignment
-00011de: 02 ; store offset
-00011df: 0b ; end
-00011d6: 09 ; FIXUP func body size
+00011d2: 00 ; func body size (guess)
+00011d3: 00 ; local decl count
+00011d4: 41 ; i32.const
+00011d5: 01 ; i32 literal
+00011d6: 42 ; i64.const
+00011d7: 02 ; i64 literal
+00011d8: 3c ; i64.store8
+00011d9: 00 ; alignment
+00011da: 02 ; store offset
+00011db: 0b ; end
+00011d2: 09 ; FIXUP func body size
; function body 35
-00011e0: 00 ; func body size (guess)
-00011e1: 00 ; local decl count
-00011e2: 41 ; i32.const
-00011e3: 01 ; i32 literal
-00011e4: 42 ; i64.const
-00011e5: 02 ; i64 literal
-00011e6: 3d ; i64.store16
-00011e7: 01 ; alignment
-00011e8: 02 ; store offset
-00011e9: 0b ; end
-00011e0: 09 ; FIXUP func body size
+00011dc: 00 ; func body size (guess)
+00011dd: 00 ; local decl count
+00011de: 41 ; i32.const
+00011df: 01 ; i32 literal
+00011e0: 42 ; i64.const
+00011e1: 02 ; i64 literal
+00011e2: 3d ; i64.store16
+00011e3: 01 ; alignment
+00011e4: 02 ; store offset
+00011e5: 0b ; end
+00011dc: 09 ; FIXUP func body size
; function body 36
-00011ea: 00 ; func body size (guess)
-00011eb: 00 ; local decl count
-00011ec: 41 ; i32.const
-00011ed: 01 ; i32 literal
-00011ee: 42 ; i64.const
-00011ef: 02 ; i64 literal
-00011f0: 3e ; i64.store32
-00011f1: 02 ; alignment
-00011f2: 02 ; store offset
-00011f3: 0b ; end
-00011ea: 09 ; FIXUP func body size
+00011e6: 00 ; func body size (guess)
+00011e7: 00 ; local decl count
+00011e8: 41 ; i32.const
+00011e9: 01 ; i32 literal
+00011ea: 42 ; i64.const
+00011eb: 02 ; i64 literal
+00011ec: 3e ; i64.store32
+00011ed: 02 ; alignment
+00011ee: 02 ; store offset
+00011ef: 0b ; end
+00011e6: 09 ; FIXUP func body size
; function body 37
-00011f4: 00 ; func body size (guess)
-00011f5: 00 ; local decl count
-00011f6: 3f ; current_memory
-00011f7: 00 ; current_memory reserved
-00011f8: 1a ; drop
-00011f9: 0b ; end
-00011f4: 05 ; FIXUP func body size
+00011f0: 00 ; func body size (guess)
+00011f1: 00 ; local decl count
+00011f2: 3f ; current_memory
+00011f3: 00 ; current_memory reserved
+00011f4: 1a ; drop
+00011f5: 0b ; end
+00011f0: 05 ; FIXUP func body size
; function body 38
-00011fa: 00 ; func body size (guess)
-00011fb: 00 ; local decl count
-00011fc: 41 ; i32.const
-00011fd: 01 ; i32 literal
-00011fe: 40 ; grow_memory
-00011ff: 00 ; grow_memory reserved
-0001200: 1a ; drop
-0001201: 0b ; end
-00011fa: 07 ; FIXUP func body size
+00011f6: 00 ; func body size (guess)
+00011f7: 00 ; local decl count
+00011f8: 41 ; i32.const
+00011f9: 01 ; i32 literal
+00011fa: 40 ; grow_memory
+00011fb: 00 ; grow_memory reserved
+00011fc: 1a ; drop
+00011fd: 0b ; end
+00011f6: 07 ; FIXUP func body size
; function body 39
-0001202: 00 ; func body size (guess)
-0001203: 00 ; local decl count
-0001204: 41 ; i32.const
-0001205: 01 ; i32 literal
-0001206: 1a ; drop
-0001207: 0b ; end
-0001202: 05 ; FIXUP func body size
+00011fe: 00 ; func body size (guess)
+00011ff: 00 ; local decl count
+0001200: 41 ; i32.const
+0001201: 01 ; i32 literal
+0001202: 1a ; drop
+0001203: 0b ; end
+00011fe: 05 ; FIXUP func body size
; function body 40
-0001208: 00 ; func body size (guess)
-0001209: 00 ; local decl count
-000120a: 42 ; i64.const
-000120b: 01 ; i64 literal
-000120c: 1a ; drop
-000120d: 0b ; end
-0001208: 05 ; FIXUP func body size
+0001204: 00 ; func body size (guess)
+0001205: 00 ; local decl count
+0001206: 42 ; i64.const
+0001207: 01 ; i64 literal
+0001208: 1a ; drop
+0001209: 0b ; end
+0001204: 05 ; FIXUP func body size
; function body 41
-000120e: 00 ; func body size (guess)
-000120f: 00 ; local decl count
-0001210: 43 ; f32.const
-0001211: 0000 803f ; f32 literal
-0001215: 1a ; drop
-0001216: 0b ; end
-000120e: 08 ; FIXUP func body size
+000120a: 00 ; func body size (guess)
+000120b: 00 ; local decl count
+000120c: 43 ; f32.const
+000120d: 0000 803f ; f32 literal
+0001211: 1a ; drop
+0001212: 0b ; end
+000120a: 08 ; FIXUP func body size
; function body 42
-0001217: 00 ; func body size (guess)
-0001218: 00 ; local decl count
-0001219: 44 ; f64.const
-000121a: 0000 0000 0000 f03f ; f64 literal
-0001222: 1a ; drop
-0001223: 0b ; end
-0001217: 0c ; FIXUP func body size
+0001213: 00 ; func body size (guess)
+0001214: 00 ; local decl count
+0001215: 44 ; f64.const
+0001216: 0000 0000 0000 f03f ; f64 literal
+000121e: 1a ; drop
+000121f: 0b ; end
+0001213: 0c ; FIXUP func body size
; function body 43
-0001224: 00 ; func body size (guess)
-0001225: 00 ; local decl count
-0001226: 41 ; i32.const
-0001227: 01 ; i32 literal
-0001228: 45 ; i32.eqz
-0001229: 1a ; drop
-000122a: 0b ; end
-0001224: 06 ; FIXUP func body size
+0001220: 00 ; func body size (guess)
+0001221: 00 ; local decl count
+0001222: 41 ; i32.const
+0001223: 01 ; i32 literal
+0001224: 45 ; i32.eqz
+0001225: 1a ; drop
+0001226: 0b ; end
+0001220: 06 ; FIXUP func body size
; function body 44
-000122b: 00 ; func body size (guess)
-000122c: 00 ; local decl count
-000122d: 41 ; i32.const
-000122e: 01 ; i32 literal
-000122f: 41 ; i32.const
-0001230: 02 ; i32 literal
-0001231: 46 ; i32.eq
-0001232: 1a ; drop
-0001233: 0b ; end
-000122b: 08 ; FIXUP func body size
+0001227: 00 ; func body size (guess)
+0001228: 00 ; local decl count
+0001229: 41 ; i32.const
+000122a: 01 ; i32 literal
+000122b: 41 ; i32.const
+000122c: 02 ; i32 literal
+000122d: 46 ; i32.eq
+000122e: 1a ; drop
+000122f: 0b ; end
+0001227: 08 ; FIXUP func body size
; function body 45
-0001234: 00 ; func body size (guess)
-0001235: 00 ; local decl count
-0001236: 41 ; i32.const
-0001237: 01 ; i32 literal
-0001238: 41 ; i32.const
-0001239: 02 ; i32 literal
-000123a: 47 ; i32.ne
-000123b: 1a ; drop
-000123c: 0b ; end
-0001234: 08 ; FIXUP func body size
+0001230: 00 ; func body size (guess)
+0001231: 00 ; local decl count
+0001232: 41 ; i32.const
+0001233: 01 ; i32 literal
+0001234: 41 ; i32.const
+0001235: 02 ; i32 literal
+0001236: 47 ; i32.ne
+0001237: 1a ; drop
+0001238: 0b ; end
+0001230: 08 ; FIXUP func body size
; function body 46
-000123d: 00 ; func body size (guess)
-000123e: 00 ; local decl count
-000123f: 41 ; i32.const
-0001240: 01 ; i32 literal
-0001241: 41 ; i32.const
-0001242: 02 ; i32 literal
-0001243: 48 ; i32.lt_s
-0001244: 1a ; drop
-0001245: 0b ; end
-000123d: 08 ; FIXUP func body size
+0001239: 00 ; func body size (guess)
+000123a: 00 ; local decl count
+000123b: 41 ; i32.const
+000123c: 01 ; i32 literal
+000123d: 41 ; i32.const
+000123e: 02 ; i32 literal
+000123f: 48 ; i32.lt_s
+0001240: 1a ; drop
+0001241: 0b ; end
+0001239: 08 ; FIXUP func body size
; function body 47
-0001246: 00 ; func body size (guess)
-0001247: 00 ; local decl count
-0001248: 41 ; i32.const
-0001249: 01 ; i32 literal
-000124a: 41 ; i32.const
-000124b: 02 ; i32 literal
-000124c: 49 ; i32.lt_u
-000124d: 1a ; drop
-000124e: 0b ; end
-0001246: 08 ; FIXUP func body size
+0001242: 00 ; func body size (guess)
+0001243: 00 ; local decl count
+0001244: 41 ; i32.const
+0001245: 01 ; i32 literal
+0001246: 41 ; i32.const
+0001247: 02 ; i32 literal
+0001248: 49 ; i32.lt_u
+0001249: 1a ; drop
+000124a: 0b ; end
+0001242: 08 ; FIXUP func body size
; function body 48
-000124f: 00 ; func body size (guess)
-0001250: 00 ; local decl count
-0001251: 41 ; i32.const
-0001252: 01 ; i32 literal
-0001253: 41 ; i32.const
-0001254: 02 ; i32 literal
-0001255: 4a ; i32.gt_s
-0001256: 1a ; drop
-0001257: 0b ; end
-000124f: 08 ; FIXUP func body size
+000124b: 00 ; func body size (guess)
+000124c: 00 ; local decl count
+000124d: 41 ; i32.const
+000124e: 01 ; i32 literal
+000124f: 41 ; i32.const
+0001250: 02 ; i32 literal
+0001251: 4a ; i32.gt_s
+0001252: 1a ; drop
+0001253: 0b ; end
+000124b: 08 ; FIXUP func body size
; function body 49
-0001258: 00 ; func body size (guess)
-0001259: 00 ; local decl count
-000125a: 41 ; i32.const
-000125b: 01 ; i32 literal
-000125c: 41 ; i32.const
-000125d: 02 ; i32 literal
-000125e: 4b ; i32.gt_u
-000125f: 1a ; drop
-0001260: 0b ; end
-0001258: 08 ; FIXUP func body size
+0001254: 00 ; func body size (guess)
+0001255: 00 ; local decl count
+0001256: 41 ; i32.const
+0001257: 01 ; i32 literal
+0001258: 41 ; i32.const
+0001259: 02 ; i32 literal
+000125a: 4b ; i32.gt_u
+000125b: 1a ; drop
+000125c: 0b ; end
+0001254: 08 ; FIXUP func body size
; function body 50
-0001261: 00 ; func body size (guess)
-0001262: 00 ; local decl count
-0001263: 41 ; i32.const
-0001264: 01 ; i32 literal
-0001265: 41 ; i32.const
-0001266: 02 ; i32 literal
-0001267: 4c ; i32.le_s
-0001268: 1a ; drop
-0001269: 0b ; end
-0001261: 08 ; FIXUP func body size
+000125d: 00 ; func body size (guess)
+000125e: 00 ; local decl count
+000125f: 41 ; i32.const
+0001260: 01 ; i32 literal
+0001261: 41 ; i32.const
+0001262: 02 ; i32 literal
+0001263: 4c ; i32.le_s
+0001264: 1a ; drop
+0001265: 0b ; end
+000125d: 08 ; FIXUP func body size
; function body 51
-000126a: 00 ; func body size (guess)
-000126b: 00 ; local decl count
-000126c: 41 ; i32.const
-000126d: 01 ; i32 literal
-000126e: 41 ; i32.const
-000126f: 02 ; i32 literal
-0001270: 4d ; i32.le_u
-0001271: 1a ; drop
-0001272: 0b ; end
-000126a: 08 ; FIXUP func body size
+0001266: 00 ; func body size (guess)
+0001267: 00 ; local decl count
+0001268: 41 ; i32.const
+0001269: 01 ; i32 literal
+000126a: 41 ; i32.const
+000126b: 02 ; i32 literal
+000126c: 4d ; i32.le_u
+000126d: 1a ; drop
+000126e: 0b ; end
+0001266: 08 ; FIXUP func body size
; function body 52
-0001273: 00 ; func body size (guess)
-0001274: 00 ; local decl count
-0001275: 41 ; i32.const
-0001276: 01 ; i32 literal
-0001277: 41 ; i32.const
-0001278: 02 ; i32 literal
-0001279: 4e ; i32.ge_s
-000127a: 1a ; drop
-000127b: 0b ; end
-0001273: 08 ; FIXUP func body size
+000126f: 00 ; func body size (guess)
+0001270: 00 ; local decl count
+0001271: 41 ; i32.const
+0001272: 01 ; i32 literal
+0001273: 41 ; i32.const
+0001274: 02 ; i32 literal
+0001275: 4e ; i32.ge_s
+0001276: 1a ; drop
+0001277: 0b ; end
+000126f: 08 ; FIXUP func body size
; function body 53
-000127c: 00 ; func body size (guess)
-000127d: 00 ; local decl count
-000127e: 41 ; i32.const
-000127f: 01 ; i32 literal
-0001280: 41 ; i32.const
-0001281: 02 ; i32 literal
-0001282: 4f ; i32.ge_u
-0001283: 1a ; drop
-0001284: 0b ; end
-000127c: 08 ; FIXUP func body size
+0001278: 00 ; func body size (guess)
+0001279: 00 ; local decl count
+000127a: 41 ; i32.const
+000127b: 01 ; i32 literal
+000127c: 41 ; i32.const
+000127d: 02 ; i32 literal
+000127e: 4f ; i32.ge_u
+000127f: 1a ; drop
+0001280: 0b ; end
+0001278: 08 ; FIXUP func body size
; function body 54
-0001285: 00 ; func body size (guess)
-0001286: 00 ; local decl count
-0001287: 42 ; i64.const
-0001288: 01 ; i64 literal
-0001289: 50 ; i64.eqz
-000128a: 1a ; drop
-000128b: 0b ; end
-0001285: 06 ; FIXUP func body size
+0001281: 00 ; func body size (guess)
+0001282: 00 ; local decl count
+0001283: 42 ; i64.const
+0001284: 01 ; i64 literal
+0001285: 50 ; i64.eqz
+0001286: 1a ; drop
+0001287: 0b ; end
+0001281: 06 ; FIXUP func body size
; function body 55
-000128c: 00 ; func body size (guess)
-000128d: 00 ; local decl count
-000128e: 42 ; i64.const
-000128f: 01 ; i64 literal
-0001290: 42 ; i64.const
-0001291: 02 ; i64 literal
-0001292: 51 ; i64.eq
-0001293: 1a ; drop
-0001294: 0b ; end
-000128c: 08 ; FIXUP func body size
+0001288: 00 ; func body size (guess)
+0001289: 00 ; local decl count
+000128a: 42 ; i64.const
+000128b: 01 ; i64 literal
+000128c: 42 ; i64.const
+000128d: 02 ; i64 literal
+000128e: 51 ; i64.eq
+000128f: 1a ; drop
+0001290: 0b ; end
+0001288: 08 ; FIXUP func body size
; function body 56
-0001295: 00 ; func body size (guess)
-0001296: 00 ; local decl count
-0001297: 42 ; i64.const
-0001298: 01 ; i64 literal
-0001299: 42 ; i64.const
-000129a: 02 ; i64 literal
-000129b: 52 ; i64.ne
-000129c: 1a ; drop
-000129d: 0b ; end
-0001295: 08 ; FIXUP func body size
+0001291: 00 ; func body size (guess)
+0001292: 00 ; local decl count
+0001293: 42 ; i64.const
+0001294: 01 ; i64 literal
+0001295: 42 ; i64.const
+0001296: 02 ; i64 literal
+0001297: 52 ; i64.ne
+0001298: 1a ; drop
+0001299: 0b ; end
+0001291: 08 ; FIXUP func body size
; function body 57
-000129e: 00 ; func body size (guess)
-000129f: 00 ; local decl count
-00012a0: 42 ; i64.const
-00012a1: 01 ; i64 literal
-00012a2: 42 ; i64.const
-00012a3: 02 ; i64 literal
-00012a4: 53 ; i64.lt_s
-00012a5: 1a ; drop
-00012a6: 0b ; end
-000129e: 08 ; FIXUP func body size
+000129a: 00 ; func body size (guess)
+000129b: 00 ; local decl count
+000129c: 42 ; i64.const
+000129d: 01 ; i64 literal
+000129e: 42 ; i64.const
+000129f: 02 ; i64 literal
+00012a0: 53 ; i64.lt_s
+00012a1: 1a ; drop
+00012a2: 0b ; end
+000129a: 08 ; FIXUP func body size
; function body 58
-00012a7: 00 ; func body size (guess)
-00012a8: 00 ; local decl count
-00012a9: 42 ; i64.const
-00012aa: 01 ; i64 literal
-00012ab: 42 ; i64.const
-00012ac: 02 ; i64 literal
-00012ad: 54 ; i64.lt_u
-00012ae: 1a ; drop
-00012af: 0b ; end
-00012a7: 08 ; FIXUP func body size
+00012a3: 00 ; func body size (guess)
+00012a4: 00 ; local decl count
+00012a5: 42 ; i64.const
+00012a6: 01 ; i64 literal
+00012a7: 42 ; i64.const
+00012a8: 02 ; i64 literal
+00012a9: 54 ; i64.lt_u
+00012aa: 1a ; drop
+00012ab: 0b ; end
+00012a3: 08 ; FIXUP func body size
; function body 59
-00012b0: 00 ; func body size (guess)
-00012b1: 00 ; local decl count
-00012b2: 42 ; i64.const
-00012b3: 01 ; i64 literal
-00012b4: 42 ; i64.const
-00012b5: 02 ; i64 literal
-00012b6: 55 ; i64.gt_s
-00012b7: 1a ; drop
-00012b8: 0b ; end
-00012b0: 08 ; FIXUP func body size
+00012ac: 00 ; func body size (guess)
+00012ad: 00 ; local decl count
+00012ae: 42 ; i64.const
+00012af: 01 ; i64 literal
+00012b0: 42 ; i64.const
+00012b1: 02 ; i64 literal
+00012b2: 55 ; i64.gt_s
+00012b3: 1a ; drop
+00012b4: 0b ; end
+00012ac: 08 ; FIXUP func body size
; function body 60
-00012b9: 00 ; func body size (guess)
-00012ba: 00 ; local decl count
-00012bb: 42 ; i64.const
-00012bc: 01 ; i64 literal
-00012bd: 42 ; i64.const
-00012be: 02 ; i64 literal
-00012bf: 56 ; i64.gt_u
-00012c0: 1a ; drop
-00012c1: 0b ; end
-00012b9: 08 ; FIXUP func body size
+00012b5: 00 ; func body size (guess)
+00012b6: 00 ; local decl count
+00012b7: 42 ; i64.const
+00012b8: 01 ; i64 literal
+00012b9: 42 ; i64.const
+00012ba: 02 ; i64 literal
+00012bb: 56 ; i64.gt_u
+00012bc: 1a ; drop
+00012bd: 0b ; end
+00012b5: 08 ; FIXUP func body size
; function body 61
-00012c2: 00 ; func body size (guess)
-00012c3: 00 ; local decl count
-00012c4: 42 ; i64.const
-00012c5: 01 ; i64 literal
-00012c6: 42 ; i64.const
-00012c7: 02 ; i64 literal
-00012c8: 57 ; i64.le_s
-00012c9: 1a ; drop
-00012ca: 0b ; end
-00012c2: 08 ; FIXUP func body size
+00012be: 00 ; func body size (guess)
+00012bf: 00 ; local decl count
+00012c0: 42 ; i64.const
+00012c1: 01 ; i64 literal
+00012c2: 42 ; i64.const
+00012c3: 02 ; i64 literal
+00012c4: 57 ; i64.le_s
+00012c5: 1a ; drop
+00012c6: 0b ; end
+00012be: 08 ; FIXUP func body size
; function body 62
-00012cb: 00 ; func body size (guess)
-00012cc: 00 ; local decl count
-00012cd: 42 ; i64.const
-00012ce: 01 ; i64 literal
-00012cf: 42 ; i64.const
-00012d0: 02 ; i64 literal
-00012d1: 58 ; i64.le_u
-00012d2: 1a ; drop
-00012d3: 0b ; end
-00012cb: 08 ; FIXUP func body size
+00012c7: 00 ; func body size (guess)
+00012c8: 00 ; local decl count
+00012c9: 42 ; i64.const
+00012ca: 01 ; i64 literal
+00012cb: 42 ; i64.const
+00012cc: 02 ; i64 literal
+00012cd: 58 ; i64.le_u
+00012ce: 1a ; drop
+00012cf: 0b ; end
+00012c7: 08 ; FIXUP func body size
; function body 63
-00012d4: 00 ; func body size (guess)
-00012d5: 00 ; local decl count
-00012d6: 42 ; i64.const
-00012d7: 01 ; i64 literal
-00012d8: 42 ; i64.const
-00012d9: 02 ; i64 literal
-00012da: 59 ; i64.ge_s
-00012db: 1a ; drop
-00012dc: 0b ; end
-00012d4: 08 ; FIXUP func body size
+00012d0: 00 ; func body size (guess)
+00012d1: 00 ; local decl count
+00012d2: 42 ; i64.const
+00012d3: 01 ; i64 literal
+00012d4: 42 ; i64.const
+00012d5: 02 ; i64 literal
+00012d6: 59 ; i64.ge_s
+00012d7: 1a ; drop
+00012d8: 0b ; end
+00012d0: 08 ; FIXUP func body size
; function body 64
-00012dd: 00 ; func body size (guess)
-00012de: 00 ; local decl count
-00012df: 42 ; i64.const
-00012e0: 01 ; i64 literal
-00012e1: 42 ; i64.const
-00012e2: 02 ; i64 literal
-00012e3: 5a ; i64.ge_u
-00012e4: 1a ; drop
-00012e5: 0b ; end
-00012dd: 08 ; FIXUP func body size
+00012d9: 00 ; func body size (guess)
+00012da: 00 ; local decl count
+00012db: 42 ; i64.const
+00012dc: 01 ; i64 literal
+00012dd: 42 ; i64.const
+00012de: 02 ; i64 literal
+00012df: 5a ; i64.ge_u
+00012e0: 1a ; drop
+00012e1: 0b ; end
+00012d9: 08 ; FIXUP func body size
; function body 65
-00012e6: 00 ; func body size (guess)
-00012e7: 00 ; local decl count
-00012e8: 43 ; f32.const
-00012e9: 0000 803f ; f32 literal
-00012ed: 43 ; f32.const
-00012ee: 0000 0040 ; f32 literal
-00012f2: 5b ; f32.eq
-00012f3: 1a ; drop
-00012f4: 0b ; end
-00012e6: 0e ; FIXUP func body size
+00012e2: 00 ; func body size (guess)
+00012e3: 00 ; local decl count
+00012e4: 43 ; f32.const
+00012e5: 0000 803f ; f32 literal
+00012e9: 43 ; f32.const
+00012ea: 0000 0040 ; f32 literal
+00012ee: 5b ; f32.eq
+00012ef: 1a ; drop
+00012f0: 0b ; end
+00012e2: 0e ; FIXUP func body size
; function body 66
-00012f5: 00 ; func body size (guess)
-00012f6: 00 ; local decl count
-00012f7: 43 ; f32.const
-00012f8: 0000 803f ; f32 literal
-00012fc: 43 ; f32.const
-00012fd: 0000 0040 ; f32 literal
-0001301: 5c ; f32.ne
-0001302: 1a ; drop
-0001303: 0b ; end
-00012f5: 0e ; FIXUP func body size
+00012f1: 00 ; func body size (guess)
+00012f2: 00 ; local decl count
+00012f3: 43 ; f32.const
+00012f4: 0000 803f ; f32 literal
+00012f8: 43 ; f32.const
+00012f9: 0000 0040 ; f32 literal
+00012fd: 5c ; f32.ne
+00012fe: 1a ; drop
+00012ff: 0b ; end
+00012f1: 0e ; FIXUP func body size
; function body 67
-0001304: 00 ; func body size (guess)
-0001305: 00 ; local decl count
-0001306: 43 ; f32.const
-0001307: 0000 803f ; f32 literal
-000130b: 43 ; f32.const
-000130c: 0000 0040 ; f32 literal
-0001310: 5d ; f32.lt
-0001311: 1a ; drop
-0001312: 0b ; end
-0001304: 0e ; FIXUP func body size
+0001300: 00 ; func body size (guess)
+0001301: 00 ; local decl count
+0001302: 43 ; f32.const
+0001303: 0000 803f ; f32 literal
+0001307: 43 ; f32.const
+0001308: 0000 0040 ; f32 literal
+000130c: 5d ; f32.lt
+000130d: 1a ; drop
+000130e: 0b ; end
+0001300: 0e ; FIXUP func body size
; function body 68
-0001313: 00 ; func body size (guess)
-0001314: 00 ; local decl count
-0001315: 43 ; f32.const
-0001316: 0000 803f ; f32 literal
-000131a: 43 ; f32.const
-000131b: 0000 0040 ; f32 literal
-000131f: 5e ; f32.gt
-0001320: 1a ; drop
-0001321: 0b ; end
-0001313: 0e ; FIXUP func body size
+000130f: 00 ; func body size (guess)
+0001310: 00 ; local decl count
+0001311: 43 ; f32.const
+0001312: 0000 803f ; f32 literal
+0001316: 43 ; f32.const
+0001317: 0000 0040 ; f32 literal
+000131b: 5e ; f32.gt
+000131c: 1a ; drop
+000131d: 0b ; end
+000130f: 0e ; FIXUP func body size
; function body 69
-0001322: 00 ; func body size (guess)
-0001323: 00 ; local decl count
-0001324: 43 ; f32.const
-0001325: 0000 803f ; f32 literal
-0001329: 43 ; f32.const
-000132a: 0000 0040 ; f32 literal
-000132e: 5f ; f32.le
-000132f: 1a ; drop
-0001330: 0b ; end
-0001322: 0e ; FIXUP func body size
+000131e: 00 ; func body size (guess)
+000131f: 00 ; local decl count
+0001320: 43 ; f32.const
+0001321: 0000 803f ; f32 literal
+0001325: 43 ; f32.const
+0001326: 0000 0040 ; f32 literal
+000132a: 5f ; f32.le
+000132b: 1a ; drop
+000132c: 0b ; end
+000131e: 0e ; FIXUP func body size
; function body 70
-0001331: 00 ; func body size (guess)
-0001332: 00 ; local decl count
-0001333: 43 ; f32.const
-0001334: 0000 803f ; f32 literal
-0001338: 43 ; f32.const
-0001339: 0000 0040 ; f32 literal
-000133d: 60 ; f32.ge
-000133e: 1a ; drop
-000133f: 0b ; end
-0001331: 0e ; FIXUP func body size
+000132d: 00 ; func body size (guess)
+000132e: 00 ; local decl count
+000132f: 43 ; f32.const
+0001330: 0000 803f ; f32 literal
+0001334: 43 ; f32.const
+0001335: 0000 0040 ; f32 literal
+0001339: 60 ; f32.ge
+000133a: 1a ; drop
+000133b: 0b ; end
+000132d: 0e ; FIXUP func body size
; function body 71
-0001340: 00 ; func body size (guess)
-0001341: 00 ; local decl count
-0001342: 44 ; f64.const
-0001343: 0000 0000 0000 f03f ; f64 literal
-000134b: 44 ; f64.const
-000134c: 0000 0000 0000 0040 ; f64 literal
-0001354: 61 ; f64.eq
-0001355: 1a ; drop
-0001356: 0b ; end
-0001340: 16 ; FIXUP func body size
+000133c: 00 ; func body size (guess)
+000133d: 00 ; local decl count
+000133e: 44 ; f64.const
+000133f: 0000 0000 0000 f03f ; f64 literal
+0001347: 44 ; f64.const
+0001348: 0000 0000 0000 0040 ; f64 literal
+0001350: 61 ; f64.eq
+0001351: 1a ; drop
+0001352: 0b ; end
+000133c: 16 ; FIXUP func body size
; function body 72
-0001357: 00 ; func body size (guess)
-0001358: 00 ; local decl count
-0001359: 44 ; f64.const
-000135a: 0000 0000 0000 f03f ; f64 literal
-0001362: 44 ; f64.const
-0001363: 0000 0000 0000 0040 ; f64 literal
-000136b: 62 ; f64.ne
-000136c: 1a ; drop
-000136d: 0b ; end
-0001357: 16 ; FIXUP func body size
+0001353: 00 ; func body size (guess)
+0001354: 00 ; local decl count
+0001355: 44 ; f64.const
+0001356: 0000 0000 0000 f03f ; f64 literal
+000135e: 44 ; f64.const
+000135f: 0000 0000 0000 0040 ; f64 literal
+0001367: 62 ; f64.ne
+0001368: 1a ; drop
+0001369: 0b ; end
+0001353: 16 ; FIXUP func body size
; function body 73
-000136e: 00 ; func body size (guess)
-000136f: 00 ; local decl count
-0001370: 44 ; f64.const
-0001371: 0000 0000 0000 f03f ; f64 literal
-0001379: 44 ; f64.const
-000137a: 0000 0000 0000 0040 ; f64 literal
-0001382: 63 ; f64.lt
-0001383: 1a ; drop
-0001384: 0b ; end
-000136e: 16 ; FIXUP func body size
+000136a: 00 ; func body size (guess)
+000136b: 00 ; local decl count
+000136c: 44 ; f64.const
+000136d: 0000 0000 0000 f03f ; f64 literal
+0001375: 44 ; f64.const
+0001376: 0000 0000 0000 0040 ; f64 literal
+000137e: 63 ; f64.lt
+000137f: 1a ; drop
+0001380: 0b ; end
+000136a: 16 ; FIXUP func body size
; function body 74
-0001385: 00 ; func body size (guess)
-0001386: 00 ; local decl count
-0001387: 44 ; f64.const
-0001388: 0000 0000 0000 f03f ; f64 literal
-0001390: 44 ; f64.const
-0001391: 0000 0000 0000 0040 ; f64 literal
-0001399: 64 ; f64.gt
-000139a: 1a ; drop
-000139b: 0b ; end
-0001385: 16 ; FIXUP func body size
+0001381: 00 ; func body size (guess)
+0001382: 00 ; local decl count
+0001383: 44 ; f64.const
+0001384: 0000 0000 0000 f03f ; f64 literal
+000138c: 44 ; f64.const
+000138d: 0000 0000 0000 0040 ; f64 literal
+0001395: 64 ; f64.gt
+0001396: 1a ; drop
+0001397: 0b ; end
+0001381: 16 ; FIXUP func body size
; function body 75
-000139c: 00 ; func body size (guess)
-000139d: 00 ; local decl count
-000139e: 44 ; f64.const
-000139f: 0000 0000 0000 f03f ; f64 literal
-00013a7: 44 ; f64.const
-00013a8: 0000 0000 0000 0040 ; f64 literal
-00013b0: 65 ; f64.le
-00013b1: 1a ; drop
-00013b2: 0b ; end
-000139c: 16 ; FIXUP func body size
+0001398: 00 ; func body size (guess)
+0001399: 00 ; local decl count
+000139a: 44 ; f64.const
+000139b: 0000 0000 0000 f03f ; f64 literal
+00013a3: 44 ; f64.const
+00013a4: 0000 0000 0000 0040 ; f64 literal
+00013ac: 65 ; f64.le
+00013ad: 1a ; drop
+00013ae: 0b ; end
+0001398: 16 ; FIXUP func body size
; function body 76
-00013b3: 00 ; func body size (guess)
-00013b4: 00 ; local decl count
-00013b5: 44 ; f64.const
-00013b6: 0000 0000 0000 f03f ; f64 literal
-00013be: 44 ; f64.const
-00013bf: 0000 0000 0000 0040 ; f64 literal
-00013c7: 66 ; f64.ge
-00013c8: 1a ; drop
-00013c9: 0b ; end
-00013b3: 16 ; FIXUP func body size
+00013af: 00 ; func body size (guess)
+00013b0: 00 ; local decl count
+00013b1: 44 ; f64.const
+00013b2: 0000 0000 0000 f03f ; f64 literal
+00013ba: 44 ; f64.const
+00013bb: 0000 0000 0000 0040 ; f64 literal
+00013c3: 66 ; f64.ge
+00013c4: 1a ; drop
+00013c5: 0b ; end
+00013af: 16 ; FIXUP func body size
; function body 77
-00013ca: 00 ; func body size (guess)
-00013cb: 00 ; local decl count
-00013cc: 41 ; i32.const
-00013cd: 01 ; i32 literal
-00013ce: 67 ; i32.clz
-00013cf: 1a ; drop
-00013d0: 0b ; end
-00013ca: 06 ; FIXUP func body size
+00013c6: 00 ; func body size (guess)
+00013c7: 00 ; local decl count
+00013c8: 41 ; i32.const
+00013c9: 01 ; i32 literal
+00013ca: 67 ; i32.clz
+00013cb: 1a ; drop
+00013cc: 0b ; end
+00013c6: 06 ; FIXUP func body size
; function body 78
-00013d1: 00 ; func body size (guess)
-00013d2: 00 ; local decl count
-00013d3: 41 ; i32.const
-00013d4: 01 ; i32 literal
-00013d5: 68 ; i32.ctz
-00013d6: 1a ; drop
-00013d7: 0b ; end
-00013d1: 06 ; FIXUP func body size
+00013cd: 00 ; func body size (guess)
+00013ce: 00 ; local decl count
+00013cf: 41 ; i32.const
+00013d0: 01 ; i32 literal
+00013d1: 68 ; i32.ctz
+00013d2: 1a ; drop
+00013d3: 0b ; end
+00013cd: 06 ; FIXUP func body size
; function body 79
-00013d8: 00 ; func body size (guess)
-00013d9: 00 ; local decl count
-00013da: 41 ; i32.const
-00013db: 01 ; i32 literal
-00013dc: 69 ; i32.popcnt
-00013dd: 1a ; drop
-00013de: 0b ; end
-00013d8: 06 ; FIXUP func body size
+00013d4: 00 ; func body size (guess)
+00013d5: 00 ; local decl count
+00013d6: 41 ; i32.const
+00013d7: 01 ; i32 literal
+00013d8: 69 ; i32.popcnt
+00013d9: 1a ; drop
+00013da: 0b ; end
+00013d4: 06 ; FIXUP func body size
; function body 80
-00013df: 00 ; func body size (guess)
-00013e0: 00 ; local decl count
-00013e1: 41 ; i32.const
-00013e2: 01 ; i32 literal
-00013e3: 41 ; i32.const
-00013e4: 02 ; i32 literal
-00013e5: 6a ; i32.add
-00013e6: 1a ; drop
-00013e7: 0b ; end
-00013df: 08 ; FIXUP func body size
+00013db: 00 ; func body size (guess)
+00013dc: 00 ; local decl count
+00013dd: 41 ; i32.const
+00013de: 01 ; i32 literal
+00013df: 41 ; i32.const
+00013e0: 02 ; i32 literal
+00013e1: 6a ; i32.add
+00013e2: 1a ; drop
+00013e3: 0b ; end
+00013db: 08 ; FIXUP func body size
; function body 81
-00013e8: 00 ; func body size (guess)
-00013e9: 00 ; local decl count
-00013ea: 41 ; i32.const
-00013eb: 01 ; i32 literal
-00013ec: 41 ; i32.const
-00013ed: 02 ; i32 literal
-00013ee: 6b ; i32.sub
-00013ef: 1a ; drop
-00013f0: 0b ; end
-00013e8: 08 ; FIXUP func body size
+00013e4: 00 ; func body size (guess)
+00013e5: 00 ; local decl count
+00013e6: 41 ; i32.const
+00013e7: 01 ; i32 literal
+00013e8: 41 ; i32.const
+00013e9: 02 ; i32 literal
+00013ea: 6b ; i32.sub
+00013eb: 1a ; drop
+00013ec: 0b ; end
+00013e4: 08 ; FIXUP func body size
; function body 82
-00013f1: 00 ; func body size (guess)
-00013f2: 00 ; local decl count
-00013f3: 41 ; i32.const
-00013f4: 01 ; i32 literal
-00013f5: 41 ; i32.const
-00013f6: 02 ; i32 literal
-00013f7: 6c ; i32.mul
-00013f8: 1a ; drop
-00013f9: 0b ; end
-00013f1: 08 ; FIXUP func body size
+00013ed: 00 ; func body size (guess)
+00013ee: 00 ; local decl count
+00013ef: 41 ; i32.const
+00013f0: 01 ; i32 literal
+00013f1: 41 ; i32.const
+00013f2: 02 ; i32 literal
+00013f3: 6c ; i32.mul
+00013f4: 1a ; drop
+00013f5: 0b ; end
+00013ed: 08 ; FIXUP func body size
; function body 83
-00013fa: 00 ; func body size (guess)
-00013fb: 00 ; local decl count
-00013fc: 41 ; i32.const
-00013fd: 01 ; i32 literal
-00013fe: 41 ; i32.const
-00013ff: 02 ; i32 literal
-0001400: 6d ; i32.div_s
-0001401: 1a ; drop
-0001402: 0b ; end
-00013fa: 08 ; FIXUP func body size
+00013f6: 00 ; func body size (guess)
+00013f7: 00 ; local decl count
+00013f8: 41 ; i32.const
+00013f9: 01 ; i32 literal
+00013fa: 41 ; i32.const
+00013fb: 02 ; i32 literal
+00013fc: 6d ; i32.div_s
+00013fd: 1a ; drop
+00013fe: 0b ; end
+00013f6: 08 ; FIXUP func body size
; function body 84
-0001403: 00 ; func body size (guess)
-0001404: 00 ; local decl count
-0001405: 41 ; i32.const
-0001406: 01 ; i32 literal
-0001407: 41 ; i32.const
-0001408: 02 ; i32 literal
-0001409: 6e ; i32.div_u
-000140a: 1a ; drop
-000140b: 0b ; end
-0001403: 08 ; FIXUP func body size
+00013ff: 00 ; func body size (guess)
+0001400: 00 ; local decl count
+0001401: 41 ; i32.const
+0001402: 01 ; i32 literal
+0001403: 41 ; i32.const
+0001404: 02 ; i32 literal
+0001405: 6e ; i32.div_u
+0001406: 1a ; drop
+0001407: 0b ; end
+00013ff: 08 ; FIXUP func body size
; function body 85
-000140c: 00 ; func body size (guess)
-000140d: 00 ; local decl count
-000140e: 41 ; i32.const
-000140f: 01 ; i32 literal
-0001410: 41 ; i32.const
-0001411: 02 ; i32 literal
-0001412: 6f ; i32.rem_s
-0001413: 1a ; drop
-0001414: 0b ; end
-000140c: 08 ; FIXUP func body size
+0001408: 00 ; func body size (guess)
+0001409: 00 ; local decl count
+000140a: 41 ; i32.const
+000140b: 01 ; i32 literal
+000140c: 41 ; i32.const
+000140d: 02 ; i32 literal
+000140e: 6f ; i32.rem_s
+000140f: 1a ; drop
+0001410: 0b ; end
+0001408: 08 ; FIXUP func body size
; function body 86
-0001415: 00 ; func body size (guess)
-0001416: 00 ; local decl count
-0001417: 41 ; i32.const
-0001418: 01 ; i32 literal
-0001419: 41 ; i32.const
-000141a: 02 ; i32 literal
-000141b: 70 ; i32.rem_u
-000141c: 1a ; drop
-000141d: 0b ; end
-0001415: 08 ; FIXUP func body size
+0001411: 00 ; func body size (guess)
+0001412: 00 ; local decl count
+0001413: 41 ; i32.const
+0001414: 01 ; i32 literal
+0001415: 41 ; i32.const
+0001416: 02 ; i32 literal
+0001417: 70 ; i32.rem_u
+0001418: 1a ; drop
+0001419: 0b ; end
+0001411: 08 ; FIXUP func body size
; function body 87
-000141e: 00 ; func body size (guess)
-000141f: 00 ; local decl count
-0001420: 41 ; i32.const
-0001421: 01 ; i32 literal
-0001422: 41 ; i32.const
-0001423: 02 ; i32 literal
-0001424: 71 ; i32.and
-0001425: 1a ; drop
-0001426: 0b ; end
-000141e: 08 ; FIXUP func body size
+000141a: 00 ; func body size (guess)
+000141b: 00 ; local decl count
+000141c: 41 ; i32.const
+000141d: 01 ; i32 literal
+000141e: 41 ; i32.const
+000141f: 02 ; i32 literal
+0001420: 71 ; i32.and
+0001421: 1a ; drop
+0001422: 0b ; end
+000141a: 08 ; FIXUP func body size
; function body 88
-0001427: 00 ; func body size (guess)
-0001428: 00 ; local decl count
-0001429: 41 ; i32.const
-000142a: 01 ; i32 literal
-000142b: 41 ; i32.const
-000142c: 02 ; i32 literal
-000142d: 72 ; i32.or
-000142e: 1a ; drop
-000142f: 0b ; end
-0001427: 08 ; FIXUP func body size
+0001423: 00 ; func body size (guess)
+0001424: 00 ; local decl count
+0001425: 41 ; i32.const
+0001426: 01 ; i32 literal
+0001427: 41 ; i32.const
+0001428: 02 ; i32 literal
+0001429: 72 ; i32.or
+000142a: 1a ; drop
+000142b: 0b ; end
+0001423: 08 ; FIXUP func body size
; function body 89
-0001430: 00 ; func body size (guess)
-0001431: 00 ; local decl count
-0001432: 41 ; i32.const
-0001433: 01 ; i32 literal
-0001434: 41 ; i32.const
-0001435: 02 ; i32 literal
-0001436: 73 ; i32.xor
-0001437: 1a ; drop
-0001438: 0b ; end
-0001430: 08 ; FIXUP func body size
+000142c: 00 ; func body size (guess)
+000142d: 00 ; local decl count
+000142e: 41 ; i32.const
+000142f: 01 ; i32 literal
+0001430: 41 ; i32.const
+0001431: 02 ; i32 literal
+0001432: 73 ; i32.xor
+0001433: 1a ; drop
+0001434: 0b ; end
+000142c: 08 ; FIXUP func body size
; function body 90
-0001439: 00 ; func body size (guess)
-000143a: 00 ; local decl count
-000143b: 41 ; i32.const
-000143c: 01 ; i32 literal
-000143d: 41 ; i32.const
-000143e: 02 ; i32 literal
-000143f: 74 ; i32.shl
-0001440: 1a ; drop
-0001441: 0b ; end
-0001439: 08 ; FIXUP func body size
+0001435: 00 ; func body size (guess)
+0001436: 00 ; local decl count
+0001437: 41 ; i32.const
+0001438: 01 ; i32 literal
+0001439: 41 ; i32.const
+000143a: 02 ; i32 literal
+000143b: 74 ; i32.shl
+000143c: 1a ; drop
+000143d: 0b ; end
+0001435: 08 ; FIXUP func body size
; function body 91
-0001442: 00 ; func body size (guess)
-0001443: 00 ; local decl count
-0001444: 41 ; i32.const
-0001445: 01 ; i32 literal
-0001446: 41 ; i32.const
-0001447: 02 ; i32 literal
-0001448: 75 ; i32.shr_s
-0001449: 1a ; drop
-000144a: 0b ; end
-0001442: 08 ; FIXUP func body size
+000143e: 00 ; func body size (guess)
+000143f: 00 ; local decl count
+0001440: 41 ; i32.const
+0001441: 01 ; i32 literal
+0001442: 41 ; i32.const
+0001443: 02 ; i32 literal
+0001444: 75 ; i32.shr_s
+0001445: 1a ; drop
+0001446: 0b ; end
+000143e: 08 ; FIXUP func body size
; function body 92
-000144b: 00 ; func body size (guess)
-000144c: 00 ; local decl count
-000144d: 41 ; i32.const
-000144e: 01 ; i32 literal
-000144f: 41 ; i32.const
-0001450: 02 ; i32 literal
-0001451: 76 ; i32.shr_u
-0001452: 1a ; drop
-0001453: 0b ; end
-000144b: 08 ; FIXUP func body size
+0001447: 00 ; func body size (guess)
+0001448: 00 ; local decl count
+0001449: 41 ; i32.const
+000144a: 01 ; i32 literal
+000144b: 41 ; i32.const
+000144c: 02 ; i32 literal
+000144d: 76 ; i32.shr_u
+000144e: 1a ; drop
+000144f: 0b ; end
+0001447: 08 ; FIXUP func body size
; function body 93
-0001454: 00 ; func body size (guess)
-0001455: 00 ; local decl count
-0001456: 41 ; i32.const
-0001457: 01 ; i32 literal
-0001458: 41 ; i32.const
-0001459: 02 ; i32 literal
-000145a: 77 ; i32.rotl
-000145b: 1a ; drop
-000145c: 0b ; end
-0001454: 08 ; FIXUP func body size
+0001450: 00 ; func body size (guess)
+0001451: 00 ; local decl count
+0001452: 41 ; i32.const
+0001453: 01 ; i32 literal
+0001454: 41 ; i32.const
+0001455: 02 ; i32 literal
+0001456: 77 ; i32.rotl
+0001457: 1a ; drop
+0001458: 0b ; end
+0001450: 08 ; FIXUP func body size
; function body 94
-000145d: 00 ; func body size (guess)
-000145e: 00 ; local decl count
-000145f: 41 ; i32.const
-0001460: 01 ; i32 literal
-0001461: 41 ; i32.const
-0001462: 02 ; i32 literal
-0001463: 78 ; i32.rotr
-0001464: 1a ; drop
-0001465: 0b ; end
-000145d: 08 ; FIXUP func body size
+0001459: 00 ; func body size (guess)
+000145a: 00 ; local decl count
+000145b: 41 ; i32.const
+000145c: 01 ; i32 literal
+000145d: 41 ; i32.const
+000145e: 02 ; i32 literal
+000145f: 78 ; i32.rotr
+0001460: 1a ; drop
+0001461: 0b ; end
+0001459: 08 ; FIXUP func body size
; function body 95
-0001466: 00 ; func body size (guess)
-0001467: 00 ; local decl count
-0001468: 42 ; i64.const
-0001469: 01 ; i64 literal
-000146a: 79 ; i64.clz
-000146b: 1a ; drop
-000146c: 0b ; end
-0001466: 06 ; FIXUP func body size
+0001462: 00 ; func body size (guess)
+0001463: 00 ; local decl count
+0001464: 42 ; i64.const
+0001465: 01 ; i64 literal
+0001466: 79 ; i64.clz
+0001467: 1a ; drop
+0001468: 0b ; end
+0001462: 06 ; FIXUP func body size
; function body 96
-000146d: 00 ; func body size (guess)
-000146e: 00 ; local decl count
-000146f: 42 ; i64.const
-0001470: 01 ; i64 literal
-0001471: 7a ; i64.ctz
-0001472: 1a ; drop
-0001473: 0b ; end
-000146d: 06 ; FIXUP func body size
+0001469: 00 ; func body size (guess)
+000146a: 00 ; local decl count
+000146b: 42 ; i64.const
+000146c: 01 ; i64 literal
+000146d: 7a ; i64.ctz
+000146e: 1a ; drop
+000146f: 0b ; end
+0001469: 06 ; FIXUP func body size
; function body 97
-0001474: 00 ; func body size (guess)
-0001475: 00 ; local decl count
-0001476: 42 ; i64.const
-0001477: 01 ; i64 literal
-0001478: 7b ; i64.popcnt
-0001479: 1a ; drop
-000147a: 0b ; end
-0001474: 06 ; FIXUP func body size
+0001470: 00 ; func body size (guess)
+0001471: 00 ; local decl count
+0001472: 42 ; i64.const
+0001473: 01 ; i64 literal
+0001474: 7b ; i64.popcnt
+0001475: 1a ; drop
+0001476: 0b ; end
+0001470: 06 ; FIXUP func body size
; function body 98
-000147b: 00 ; func body size (guess)
-000147c: 00 ; local decl count
-000147d: 42 ; i64.const
-000147e: 01 ; i64 literal
-000147f: 42 ; i64.const
-0001480: 02 ; i64 literal
-0001481: 7c ; i64.add
-0001482: 1a ; drop
-0001483: 0b ; end
-000147b: 08 ; FIXUP func body size
+0001477: 00 ; func body size (guess)
+0001478: 00 ; local decl count
+0001479: 42 ; i64.const
+000147a: 01 ; i64 literal
+000147b: 42 ; i64.const
+000147c: 02 ; i64 literal
+000147d: 7c ; i64.add
+000147e: 1a ; drop
+000147f: 0b ; end
+0001477: 08 ; FIXUP func body size
; function body 99
-0001484: 00 ; func body size (guess)
-0001485: 00 ; local decl count
-0001486: 42 ; i64.const
-0001487: 01 ; i64 literal
-0001488: 42 ; i64.const
-0001489: 02 ; i64 literal
-000148a: 7d ; i64.sub
-000148b: 1a ; drop
-000148c: 0b ; end
-0001484: 08 ; FIXUP func body size
+0001480: 00 ; func body size (guess)
+0001481: 00 ; local decl count
+0001482: 42 ; i64.const
+0001483: 01 ; i64 literal
+0001484: 42 ; i64.const
+0001485: 02 ; i64 literal
+0001486: 7d ; i64.sub
+0001487: 1a ; drop
+0001488: 0b ; end
+0001480: 08 ; FIXUP func body size
; function body 100
-000148d: 00 ; func body size (guess)
-000148e: 00 ; local decl count
-000148f: 42 ; i64.const
-0001490: 01 ; i64 literal
-0001491: 42 ; i64.const
-0001492: 02 ; i64 literal
-0001493: 7e ; i64.mul
-0001494: 1a ; drop
-0001495: 0b ; end
-000148d: 08 ; FIXUP func body size
+0001489: 00 ; func body size (guess)
+000148a: 00 ; local decl count
+000148b: 42 ; i64.const
+000148c: 01 ; i64 literal
+000148d: 42 ; i64.const
+000148e: 02 ; i64 literal
+000148f: 7e ; i64.mul
+0001490: 1a ; drop
+0001491: 0b ; end
+0001489: 08 ; FIXUP func body size
; function body 101
-0001496: 00 ; func body size (guess)
-0001497: 00 ; local decl count
-0001498: 42 ; i64.const
-0001499: 01 ; i64 literal
-000149a: 42 ; i64.const
-000149b: 02 ; i64 literal
-000149c: 7f ; i64.div_s
-000149d: 1a ; drop
-000149e: 0b ; end
-0001496: 08 ; FIXUP func body size
+0001492: 00 ; func body size (guess)
+0001493: 00 ; local decl count
+0001494: 42 ; i64.const
+0001495: 01 ; i64 literal
+0001496: 42 ; i64.const
+0001497: 02 ; i64 literal
+0001498: 7f ; i64.div_s
+0001499: 1a ; drop
+000149a: 0b ; end
+0001492: 08 ; FIXUP func body size
; function body 102
-000149f: 00 ; func body size (guess)
-00014a0: 00 ; local decl count
-00014a1: 42 ; i64.const
-00014a2: 01 ; i64 literal
-00014a3: 42 ; i64.const
-00014a4: 02 ; i64 literal
-00014a5: 80 ; i64.div_u
-00014a6: 1a ; drop
-00014a7: 0b ; end
-000149f: 08 ; FIXUP func body size
+000149b: 00 ; func body size (guess)
+000149c: 00 ; local decl count
+000149d: 42 ; i64.const
+000149e: 01 ; i64 literal
+000149f: 42 ; i64.const
+00014a0: 02 ; i64 literal
+00014a1: 80 ; i64.div_u
+00014a2: 1a ; drop
+00014a3: 0b ; end
+000149b: 08 ; FIXUP func body size
; function body 103
-00014a8: 00 ; func body size (guess)
-00014a9: 00 ; local decl count
-00014aa: 42 ; i64.const
-00014ab: 01 ; i64 literal
-00014ac: 42 ; i64.const
-00014ad: 02 ; i64 literal
-00014ae: 81 ; i64.rem_s
-00014af: 1a ; drop
-00014b0: 0b ; end
-00014a8: 08 ; FIXUP func body size
+00014a4: 00 ; func body size (guess)
+00014a5: 00 ; local decl count
+00014a6: 42 ; i64.const
+00014a7: 01 ; i64 literal
+00014a8: 42 ; i64.const
+00014a9: 02 ; i64 literal
+00014aa: 81 ; i64.rem_s
+00014ab: 1a ; drop
+00014ac: 0b ; end
+00014a4: 08 ; FIXUP func body size
; function body 104
-00014b1: 00 ; func body size (guess)
-00014b2: 00 ; local decl count
-00014b3: 42 ; i64.const
-00014b4: 01 ; i64 literal
-00014b5: 42 ; i64.const
-00014b6: 02 ; i64 literal
-00014b7: 82 ; i64.rem_u
-00014b8: 1a ; drop
-00014b9: 0b ; end
-00014b1: 08 ; FIXUP func body size
+00014ad: 00 ; func body size (guess)
+00014ae: 00 ; local decl count
+00014af: 42 ; i64.const
+00014b0: 01 ; i64 literal
+00014b1: 42 ; i64.const
+00014b2: 02 ; i64 literal
+00014b3: 82 ; i64.rem_u
+00014b4: 1a ; drop
+00014b5: 0b ; end
+00014ad: 08 ; FIXUP func body size
; function body 105
-00014ba: 00 ; func body size (guess)
-00014bb: 00 ; local decl count
-00014bc: 42 ; i64.const
-00014bd: 01 ; i64 literal
-00014be: 42 ; i64.const
-00014bf: 02 ; i64 literal
-00014c0: 83 ; i64.and
-00014c1: 1a ; drop
-00014c2: 0b ; end
-00014ba: 08 ; FIXUP func body size
+00014b6: 00 ; func body size (guess)
+00014b7: 00 ; local decl count
+00014b8: 42 ; i64.const
+00014b9: 01 ; i64 literal
+00014ba: 42 ; i64.const
+00014bb: 02 ; i64 literal
+00014bc: 83 ; i64.and
+00014bd: 1a ; drop
+00014be: 0b ; end
+00014b6: 08 ; FIXUP func body size
; function body 106
-00014c3: 00 ; func body size (guess)
-00014c4: 00 ; local decl count
-00014c5: 42 ; i64.const
-00014c6: 01 ; i64 literal
-00014c7: 42 ; i64.const
-00014c8: 02 ; i64 literal
-00014c9: 84 ; i64.or
-00014ca: 1a ; drop
-00014cb: 0b ; end
-00014c3: 08 ; FIXUP func body size
+00014bf: 00 ; func body size (guess)
+00014c0: 00 ; local decl count
+00014c1: 42 ; i64.const
+00014c2: 01 ; i64 literal
+00014c3: 42 ; i64.const
+00014c4: 02 ; i64 literal
+00014c5: 84 ; i64.or
+00014c6: 1a ; drop
+00014c7: 0b ; end
+00014bf: 08 ; FIXUP func body size
; function body 107
-00014cc: 00 ; func body size (guess)
-00014cd: 00 ; local decl count
-00014ce: 42 ; i64.const
-00014cf: 01 ; i64 literal
-00014d0: 42 ; i64.const
-00014d1: 02 ; i64 literal
-00014d2: 85 ; i64.xor
-00014d3: 1a ; drop
-00014d4: 0b ; end
-00014cc: 08 ; FIXUP func body size
+00014c8: 00 ; func body size (guess)
+00014c9: 00 ; local decl count
+00014ca: 42 ; i64.const
+00014cb: 01 ; i64 literal
+00014cc: 42 ; i64.const
+00014cd: 02 ; i64 literal
+00014ce: 85 ; i64.xor
+00014cf: 1a ; drop
+00014d0: 0b ; end
+00014c8: 08 ; FIXUP func body size
; function body 108
-00014d5: 00 ; func body size (guess)
-00014d6: 00 ; local decl count
-00014d7: 42 ; i64.const
-00014d8: 01 ; i64 literal
-00014d9: 42 ; i64.const
-00014da: 02 ; i64 literal
-00014db: 86 ; i64.shl
-00014dc: 1a ; drop
-00014dd: 0b ; end
-00014d5: 08 ; FIXUP func body size
+00014d1: 00 ; func body size (guess)
+00014d2: 00 ; local decl count
+00014d3: 42 ; i64.const
+00014d4: 01 ; i64 literal
+00014d5: 42 ; i64.const
+00014d6: 02 ; i64 literal
+00014d7: 86 ; i64.shl
+00014d8: 1a ; drop
+00014d9: 0b ; end
+00014d1: 08 ; FIXUP func body size
; function body 109
-00014de: 00 ; func body size (guess)
-00014df: 00 ; local decl count
-00014e0: 42 ; i64.const
-00014e1: 01 ; i64 literal
-00014e2: 42 ; i64.const
-00014e3: 02 ; i64 literal
-00014e4: 87 ; i64.shr_s
-00014e5: 1a ; drop
-00014e6: 0b ; end
-00014de: 08 ; FIXUP func body size
+00014da: 00 ; func body size (guess)
+00014db: 00 ; local decl count
+00014dc: 42 ; i64.const
+00014dd: 01 ; i64 literal
+00014de: 42 ; i64.const
+00014df: 02 ; i64 literal
+00014e0: 87 ; i64.shr_s
+00014e1: 1a ; drop
+00014e2: 0b ; end
+00014da: 08 ; FIXUP func body size
; function body 110
-00014e7: 00 ; func body size (guess)
-00014e8: 00 ; local decl count
-00014e9: 42 ; i64.const
-00014ea: 01 ; i64 literal
-00014eb: 42 ; i64.const
-00014ec: 02 ; i64 literal
-00014ed: 88 ; i64.shr_u
-00014ee: 1a ; drop
-00014ef: 0b ; end
-00014e7: 08 ; FIXUP func body size
+00014e3: 00 ; func body size (guess)
+00014e4: 00 ; local decl count
+00014e5: 42 ; i64.const
+00014e6: 01 ; i64 literal
+00014e7: 42 ; i64.const
+00014e8: 02 ; i64 literal
+00014e9: 88 ; i64.shr_u
+00014ea: 1a ; drop
+00014eb: 0b ; end
+00014e3: 08 ; FIXUP func body size
; function body 111
-00014f0: 00 ; func body size (guess)
-00014f1: 00 ; local decl count
-00014f2: 42 ; i64.const
-00014f3: 01 ; i64 literal
-00014f4: 42 ; i64.const
-00014f5: 02 ; i64 literal
-00014f6: 89 ; i64.rotl
-00014f7: 1a ; drop
-00014f8: 0b ; end
-00014f0: 08 ; FIXUP func body size
+00014ec: 00 ; func body size (guess)
+00014ed: 00 ; local decl count
+00014ee: 42 ; i64.const
+00014ef: 01 ; i64 literal
+00014f0: 42 ; i64.const
+00014f1: 02 ; i64 literal
+00014f2: 89 ; i64.rotl
+00014f3: 1a ; drop
+00014f4: 0b ; end
+00014ec: 08 ; FIXUP func body size
; function body 112
-00014f9: 00 ; func body size (guess)
-00014fa: 00 ; local decl count
-00014fb: 42 ; i64.const
-00014fc: 01 ; i64 literal
-00014fd: 42 ; i64.const
-00014fe: 02 ; i64 literal
-00014ff: 8a ; i64.rotr
-0001500: 1a ; drop
-0001501: 0b ; end
-00014f9: 08 ; FIXUP func body size
+00014f5: 00 ; func body size (guess)
+00014f6: 00 ; local decl count
+00014f7: 42 ; i64.const
+00014f8: 01 ; i64 literal
+00014f9: 42 ; i64.const
+00014fa: 02 ; i64 literal
+00014fb: 8a ; i64.rotr
+00014fc: 1a ; drop
+00014fd: 0b ; end
+00014f5: 08 ; FIXUP func body size
; function body 113
-0001502: 00 ; func body size (guess)
-0001503: 00 ; local decl count
-0001504: 43 ; f32.const
-0001505: 0000 803f ; f32 literal
-0001509: 8b ; f32.abs
-000150a: 1a ; drop
-000150b: 0b ; end
-0001502: 09 ; FIXUP func body size
+00014fe: 00 ; func body size (guess)
+00014ff: 00 ; local decl count
+0001500: 43 ; f32.const
+0001501: 0000 803f ; f32 literal
+0001505: 8b ; f32.abs
+0001506: 1a ; drop
+0001507: 0b ; end
+00014fe: 09 ; FIXUP func body size
; function body 114
-000150c: 00 ; func body size (guess)
-000150d: 00 ; local decl count
-000150e: 43 ; f32.const
-000150f: 0000 803f ; f32 literal
-0001513: 8c ; f32.neg
-0001514: 1a ; drop
-0001515: 0b ; end
-000150c: 09 ; FIXUP func body size
+0001508: 00 ; func body size (guess)
+0001509: 00 ; local decl count
+000150a: 43 ; f32.const
+000150b: 0000 803f ; f32 literal
+000150f: 8c ; f32.neg
+0001510: 1a ; drop
+0001511: 0b ; end
+0001508: 09 ; FIXUP func body size
; function body 115
-0001516: 00 ; func body size (guess)
-0001517: 00 ; local decl count
-0001518: 43 ; f32.const
-0001519: 0000 803f ; f32 literal
-000151d: 8d ; f32.ceil
-000151e: 1a ; drop
-000151f: 0b ; end
-0001516: 09 ; FIXUP func body size
+0001512: 00 ; func body size (guess)
+0001513: 00 ; local decl count
+0001514: 43 ; f32.const
+0001515: 0000 803f ; f32 literal
+0001519: 8d ; f32.ceil
+000151a: 1a ; drop
+000151b: 0b ; end
+0001512: 09 ; FIXUP func body size
; function body 116
-0001520: 00 ; func body size (guess)
-0001521: 00 ; local decl count
-0001522: 43 ; f32.const
-0001523: 0000 803f ; f32 literal
-0001527: 8e ; f32.floor
-0001528: 1a ; drop
-0001529: 0b ; end
-0001520: 09 ; FIXUP func body size
+000151c: 00 ; func body size (guess)
+000151d: 00 ; local decl count
+000151e: 43 ; f32.const
+000151f: 0000 803f ; f32 literal
+0001523: 8e ; f32.floor
+0001524: 1a ; drop
+0001525: 0b ; end
+000151c: 09 ; FIXUP func body size
; function body 117
-000152a: 00 ; func body size (guess)
-000152b: 00 ; local decl count
-000152c: 43 ; f32.const
-000152d: 0000 803f ; f32 literal
-0001531: 8f ; f32.trunc
-0001532: 1a ; drop
-0001533: 0b ; end
-000152a: 09 ; FIXUP func body size
+0001526: 00 ; func body size (guess)
+0001527: 00 ; local decl count
+0001528: 43 ; f32.const
+0001529: 0000 803f ; f32 literal
+000152d: 8f ; f32.trunc
+000152e: 1a ; drop
+000152f: 0b ; end
+0001526: 09 ; FIXUP func body size
; function body 118
-0001534: 00 ; func body size (guess)
-0001535: 00 ; local decl count
-0001536: 43 ; f32.const
-0001537: 0000 803f ; f32 literal
-000153b: 90 ; f32.nearest
-000153c: 1a ; drop
-000153d: 0b ; end
-0001534: 09 ; FIXUP func body size
+0001530: 00 ; func body size (guess)
+0001531: 00 ; local decl count
+0001532: 43 ; f32.const
+0001533: 0000 803f ; f32 literal
+0001537: 90 ; f32.nearest
+0001538: 1a ; drop
+0001539: 0b ; end
+0001530: 09 ; FIXUP func body size
; function body 119
-000153e: 00 ; func body size (guess)
-000153f: 00 ; local decl count
-0001540: 43 ; f32.const
-0001541: 0000 803f ; f32 literal
-0001545: 91 ; f32.sqrt
-0001546: 1a ; drop
-0001547: 0b ; end
-000153e: 09 ; FIXUP func body size
+000153a: 00 ; func body size (guess)
+000153b: 00 ; local decl count
+000153c: 43 ; f32.const
+000153d: 0000 803f ; f32 literal
+0001541: 91 ; f32.sqrt
+0001542: 1a ; drop
+0001543: 0b ; end
+000153a: 09 ; FIXUP func body size
; function body 120
-0001548: 00 ; func body size (guess)
-0001549: 00 ; local decl count
-000154a: 43 ; f32.const
-000154b: 0000 803f ; f32 literal
-000154f: 43 ; f32.const
-0001550: 0000 0040 ; f32 literal
-0001554: 92 ; f32.add
-0001555: 1a ; drop
-0001556: 0b ; end
-0001548: 0e ; FIXUP func body size
+0001544: 00 ; func body size (guess)
+0001545: 00 ; local decl count
+0001546: 43 ; f32.const
+0001547: 0000 803f ; f32 literal
+000154b: 43 ; f32.const
+000154c: 0000 0040 ; f32 literal
+0001550: 92 ; f32.add
+0001551: 1a ; drop
+0001552: 0b ; end
+0001544: 0e ; FIXUP func body size
; function body 121
-0001557: 00 ; func body size (guess)
-0001558: 00 ; local decl count
-0001559: 43 ; f32.const
-000155a: 0000 803f ; f32 literal
-000155e: 43 ; f32.const
-000155f: 0000 0040 ; f32 literal
-0001563: 93 ; f32.sub
-0001564: 1a ; drop
-0001565: 0b ; end
-0001557: 0e ; FIXUP func body size
+0001553: 00 ; func body size (guess)
+0001554: 00 ; local decl count
+0001555: 43 ; f32.const
+0001556: 0000 803f ; f32 literal
+000155a: 43 ; f32.const
+000155b: 0000 0040 ; f32 literal
+000155f: 93 ; f32.sub
+0001560: 1a ; drop
+0001561: 0b ; end
+0001553: 0e ; FIXUP func body size
; function body 122
-0001566: 00 ; func body size (guess)
-0001567: 00 ; local decl count
-0001568: 43 ; f32.const
-0001569: 0000 803f ; f32 literal
-000156d: 43 ; f32.const
-000156e: 0000 0040 ; f32 literal
-0001572: 94 ; f32.mul
-0001573: 1a ; drop
-0001574: 0b ; end
-0001566: 0e ; FIXUP func body size
+0001562: 00 ; func body size (guess)
+0001563: 00 ; local decl count
+0001564: 43 ; f32.const
+0001565: 0000 803f ; f32 literal
+0001569: 43 ; f32.const
+000156a: 0000 0040 ; f32 literal
+000156e: 94 ; f32.mul
+000156f: 1a ; drop
+0001570: 0b ; end
+0001562: 0e ; FIXUP func body size
; function body 123
-0001575: 00 ; func body size (guess)
-0001576: 00 ; local decl count
-0001577: 43 ; f32.const
-0001578: 0000 803f ; f32 literal
-000157c: 43 ; f32.const
-000157d: 0000 0040 ; f32 literal
-0001581: 95 ; f32.div
-0001582: 1a ; drop
-0001583: 0b ; end
-0001575: 0e ; FIXUP func body size
+0001571: 00 ; func body size (guess)
+0001572: 00 ; local decl count
+0001573: 43 ; f32.const
+0001574: 0000 803f ; f32 literal
+0001578: 43 ; f32.const
+0001579: 0000 0040 ; f32 literal
+000157d: 95 ; f32.div
+000157e: 1a ; drop
+000157f: 0b ; end
+0001571: 0e ; FIXUP func body size
; function body 124
-0001584: 00 ; func body size (guess)
-0001585: 00 ; local decl count
-0001586: 43 ; f32.const
-0001587: 0000 803f ; f32 literal
-000158b: 43 ; f32.const
-000158c: 0000 0040 ; f32 literal
-0001590: 96 ; f32.min
-0001591: 1a ; drop
-0001592: 0b ; end
-0001584: 0e ; FIXUP func body size
+0001580: 00 ; func body size (guess)
+0001581: 00 ; local decl count
+0001582: 43 ; f32.const
+0001583: 0000 803f ; f32 literal
+0001587: 43 ; f32.const
+0001588: 0000 0040 ; f32 literal
+000158c: 96 ; f32.min
+000158d: 1a ; drop
+000158e: 0b ; end
+0001580: 0e ; FIXUP func body size
; function body 125
-0001593: 00 ; func body size (guess)
-0001594: 00 ; local decl count
-0001595: 43 ; f32.const
-0001596: 0000 803f ; f32 literal
-000159a: 43 ; f32.const
-000159b: 0000 0040 ; f32 literal
-000159f: 97 ; f32.max
-00015a0: 1a ; drop
-00015a1: 0b ; end
-0001593: 0e ; FIXUP func body size
+000158f: 00 ; func body size (guess)
+0001590: 00 ; local decl count
+0001591: 43 ; f32.const
+0001592: 0000 803f ; f32 literal
+0001596: 43 ; f32.const
+0001597: 0000 0040 ; f32 literal
+000159b: 97 ; f32.max
+000159c: 1a ; drop
+000159d: 0b ; end
+000158f: 0e ; FIXUP func body size
; function body 126
-00015a2: 00 ; func body size (guess)
-00015a3: 00 ; local decl count
-00015a4: 43 ; f32.const
-00015a5: 0000 803f ; f32 literal
-00015a9: 43 ; f32.const
-00015aa: 0000 0040 ; f32 literal
-00015ae: 98 ; f32.copysign
-00015af: 1a ; drop
-00015b0: 0b ; end
-00015a2: 0e ; FIXUP func body size
+000159e: 00 ; func body size (guess)
+000159f: 00 ; local decl count
+00015a0: 43 ; f32.const
+00015a1: 0000 803f ; f32 literal
+00015a5: 43 ; f32.const
+00015a6: 0000 0040 ; f32 literal
+00015aa: 98 ; f32.copysign
+00015ab: 1a ; drop
+00015ac: 0b ; end
+000159e: 0e ; FIXUP func body size
; function body 127
-00015b1: 00 ; func body size (guess)
-00015b2: 00 ; local decl count
-00015b3: 44 ; f64.const
-00015b4: 0000 0000 0000 f03f ; f64 literal
-00015bc: 99 ; f64.abs
-00015bd: 1a ; drop
-00015be: 0b ; end
-00015b1: 0d ; FIXUP func body size
+00015ad: 00 ; func body size (guess)
+00015ae: 00 ; local decl count
+00015af: 44 ; f64.const
+00015b0: 0000 0000 0000 f03f ; f64 literal
+00015b8: 99 ; f64.abs
+00015b9: 1a ; drop
+00015ba: 0b ; end
+00015ad: 0d ; FIXUP func body size
; function body 128
-00015bf: 00 ; func body size (guess)
-00015c0: 00 ; local decl count
-00015c1: 44 ; f64.const
-00015c2: 0000 0000 0000 f03f ; f64 literal
-00015ca: 9a ; f64.neg
-00015cb: 1a ; drop
-00015cc: 0b ; end
-00015bf: 0d ; FIXUP func body size
+00015bb: 00 ; func body size (guess)
+00015bc: 00 ; local decl count
+00015bd: 44 ; f64.const
+00015be: 0000 0000 0000 f03f ; f64 literal
+00015c6: 9a ; f64.neg
+00015c7: 1a ; drop
+00015c8: 0b ; end
+00015bb: 0d ; FIXUP func body size
; function body 129
-00015cd: 00 ; func body size (guess)
-00015ce: 00 ; local decl count
-00015cf: 44 ; f64.const
-00015d0: 0000 0000 0000 f03f ; f64 literal
-00015d8: 9b ; f64.ceil
-00015d9: 1a ; drop
-00015da: 0b ; end
-00015cd: 0d ; FIXUP func body size
+00015c9: 00 ; func body size (guess)
+00015ca: 00 ; local decl count
+00015cb: 44 ; f64.const
+00015cc: 0000 0000 0000 f03f ; f64 literal
+00015d4: 9b ; f64.ceil
+00015d5: 1a ; drop
+00015d6: 0b ; end
+00015c9: 0d ; FIXUP func body size
; function body 130
-00015db: 00 ; func body size (guess)
-00015dc: 00 ; local decl count
-00015dd: 44 ; f64.const
-00015de: 0000 0000 0000 f03f ; f64 literal
-00015e6: 9c ; f64.floor
-00015e7: 1a ; drop
-00015e8: 0b ; end
-00015db: 0d ; FIXUP func body size
+00015d7: 00 ; func body size (guess)
+00015d8: 00 ; local decl count
+00015d9: 44 ; f64.const
+00015da: 0000 0000 0000 f03f ; f64 literal
+00015e2: 9c ; f64.floor
+00015e3: 1a ; drop
+00015e4: 0b ; end
+00015d7: 0d ; FIXUP func body size
; function body 131
-00015e9: 00 ; func body size (guess)
-00015ea: 00 ; local decl count
-00015eb: 44 ; f64.const
-00015ec: 0000 0000 0000 f03f ; f64 literal
-00015f4: 9d ; f64.trunc
-00015f5: 1a ; drop
-00015f6: 0b ; end
-00015e9: 0d ; FIXUP func body size
+00015e5: 00 ; func body size (guess)
+00015e6: 00 ; local decl count
+00015e7: 44 ; f64.const
+00015e8: 0000 0000 0000 f03f ; f64 literal
+00015f0: 9d ; f64.trunc
+00015f1: 1a ; drop
+00015f2: 0b ; end
+00015e5: 0d ; FIXUP func body size
; function body 132
-00015f7: 00 ; func body size (guess)
-00015f8: 00 ; local decl count
-00015f9: 44 ; f64.const
-00015fa: 0000 0000 0000 f03f ; f64 literal
-0001602: 9e ; f64.nearest
-0001603: 1a ; drop
-0001604: 0b ; end
-00015f7: 0d ; FIXUP func body size
+00015f3: 00 ; func body size (guess)
+00015f4: 00 ; local decl count
+00015f5: 44 ; f64.const
+00015f6: 0000 0000 0000 f03f ; f64 literal
+00015fe: 9e ; f64.nearest
+00015ff: 1a ; drop
+0001600: 0b ; end
+00015f3: 0d ; FIXUP func body size
; function body 133
-0001605: 00 ; func body size (guess)
-0001606: 00 ; local decl count
-0001607: 44 ; f64.const
-0001608: 0000 0000 0000 f03f ; f64 literal
-0001610: 9f ; f64.sqrt
-0001611: 1a ; drop
-0001612: 0b ; end
-0001605: 0d ; FIXUP func body size
+0001601: 00 ; func body size (guess)
+0001602: 00 ; local decl count
+0001603: 44 ; f64.const
+0001604: 0000 0000 0000 f03f ; f64 literal
+000160c: 9f ; f64.sqrt
+000160d: 1a ; drop
+000160e: 0b ; end
+0001601: 0d ; FIXUP func body size
; function body 134
-0001613: 00 ; func body size (guess)
-0001614: 00 ; local decl count
-0001615: 44 ; f64.const
-0001616: 0000 0000 0000 f03f ; f64 literal
-000161e: 44 ; f64.const
-000161f: 0000 0000 0000 0040 ; f64 literal
-0001627: a0 ; f64.add
-0001628: 1a ; drop
-0001629: 0b ; end
-0001613: 16 ; FIXUP func body size
+000160f: 00 ; func body size (guess)
+0001610: 00 ; local decl count
+0001611: 44 ; f64.const
+0001612: 0000 0000 0000 f03f ; f64 literal
+000161a: 44 ; f64.const
+000161b: 0000 0000 0000 0040 ; f64 literal
+0001623: a0 ; f64.add
+0001624: 1a ; drop
+0001625: 0b ; end
+000160f: 16 ; FIXUP func body size
; function body 135
-000162a: 00 ; func body size (guess)
-000162b: 00 ; local decl count
-000162c: 44 ; f64.const
-000162d: 0000 0000 0000 f03f ; f64 literal
-0001635: 44 ; f64.const
-0001636: 0000 0000 0000 0040 ; f64 literal
-000163e: a1 ; f64.sub
-000163f: 1a ; drop
-0001640: 0b ; end
-000162a: 16 ; FIXUP func body size
+0001626: 00 ; func body size (guess)
+0001627: 00 ; local decl count
+0001628: 44 ; f64.const
+0001629: 0000 0000 0000 f03f ; f64 literal
+0001631: 44 ; f64.const
+0001632: 0000 0000 0000 0040 ; f64 literal
+000163a: a1 ; f64.sub
+000163b: 1a ; drop
+000163c: 0b ; end
+0001626: 16 ; FIXUP func body size
; function body 136
-0001641: 00 ; func body size (guess)
-0001642: 00 ; local decl count
-0001643: 44 ; f64.const
-0001644: 0000 0000 0000 f03f ; f64 literal
-000164c: 44 ; f64.const
-000164d: 0000 0000 0000 0040 ; f64 literal
-0001655: a2 ; f64.mul
-0001656: 1a ; drop
-0001657: 0b ; end
-0001641: 16 ; FIXUP func body size
+000163d: 00 ; func body size (guess)
+000163e: 00 ; local decl count
+000163f: 44 ; f64.const
+0001640: 0000 0000 0000 f03f ; f64 literal
+0001648: 44 ; f64.const
+0001649: 0000 0000 0000 0040 ; f64 literal
+0001651: a2 ; f64.mul
+0001652: 1a ; drop
+0001653: 0b ; end
+000163d: 16 ; FIXUP func body size
; function body 137
-0001658: 00 ; func body size (guess)
-0001659: 00 ; local decl count
-000165a: 44 ; f64.const
-000165b: 0000 0000 0000 f03f ; f64 literal
-0001663: 44 ; f64.const
-0001664: 0000 0000 0000 0040 ; f64 literal
-000166c: a3 ; f64.div
-000166d: 1a ; drop
-000166e: 0b ; end
-0001658: 16 ; FIXUP func body size
+0001654: 00 ; func body size (guess)
+0001655: 00 ; local decl count
+0001656: 44 ; f64.const
+0001657: 0000 0000 0000 f03f ; f64 literal
+000165f: 44 ; f64.const
+0001660: 0000 0000 0000 0040 ; f64 literal
+0001668: a3 ; f64.div
+0001669: 1a ; drop
+000166a: 0b ; end
+0001654: 16 ; FIXUP func body size
; function body 138
-000166f: 00 ; func body size (guess)
-0001670: 00 ; local decl count
-0001671: 44 ; f64.const
-0001672: 0000 0000 0000 f03f ; f64 literal
-000167a: 44 ; f64.const
-000167b: 0000 0000 0000 0040 ; f64 literal
-0001683: a4 ; f64.min
-0001684: 1a ; drop
-0001685: 0b ; end
-000166f: 16 ; FIXUP func body size
+000166b: 00 ; func body size (guess)
+000166c: 00 ; local decl count
+000166d: 44 ; f64.const
+000166e: 0000 0000 0000 f03f ; f64 literal
+0001676: 44 ; f64.const
+0001677: 0000 0000 0000 0040 ; f64 literal
+000167f: a4 ; f64.min
+0001680: 1a ; drop
+0001681: 0b ; end
+000166b: 16 ; FIXUP func body size
; function body 139
-0001686: 00 ; func body size (guess)
-0001687: 00 ; local decl count
-0001688: 44 ; f64.const
-0001689: 0000 0000 0000 f03f ; f64 literal
-0001691: 44 ; f64.const
-0001692: 0000 0000 0000 0040 ; f64 literal
-000169a: a5 ; f64.max
-000169b: 1a ; drop
-000169c: 0b ; end
-0001686: 16 ; FIXUP func body size
+0001682: 00 ; func body size (guess)
+0001683: 00 ; local decl count
+0001684: 44 ; f64.const
+0001685: 0000 0000 0000 f03f ; f64 literal
+000168d: 44 ; f64.const
+000168e: 0000 0000 0000 0040 ; f64 literal
+0001696: a5 ; f64.max
+0001697: 1a ; drop
+0001698: 0b ; end
+0001682: 16 ; FIXUP func body size
; function body 140
-000169d: 00 ; func body size (guess)
-000169e: 00 ; local decl count
-000169f: 44 ; f64.const
-00016a0: 0000 0000 0000 f03f ; f64 literal
-00016a8: 44 ; f64.const
-00016a9: 0000 0000 0000 0040 ; f64 literal
-00016b1: a6 ; f64.copysign
-00016b2: 1a ; drop
-00016b3: 0b ; end
-000169d: 16 ; FIXUP func body size
+0001699: 00 ; func body size (guess)
+000169a: 00 ; local decl count
+000169b: 44 ; f64.const
+000169c: 0000 0000 0000 f03f ; f64 literal
+00016a4: 44 ; f64.const
+00016a5: 0000 0000 0000 0040 ; f64 literal
+00016ad: a6 ; f64.copysign
+00016ae: 1a ; drop
+00016af: 0b ; end
+0001699: 16 ; FIXUP func body size
; function body 141
-00016b4: 00 ; func body size (guess)
-00016b5: 00 ; local decl count
-00016b6: 42 ; i64.const
-00016b7: 01 ; i64 literal
-00016b8: a7 ; i32.wrap/i64
-00016b9: 1a ; drop
-00016ba: 0b ; end
-00016b4: 06 ; FIXUP func body size
+00016b0: 00 ; func body size (guess)
+00016b1: 00 ; local decl count
+00016b2: 42 ; i64.const
+00016b3: 01 ; i64 literal
+00016b4: a7 ; i32.wrap/i64
+00016b5: 1a ; drop
+00016b6: 0b ; end
+00016b0: 06 ; FIXUP func body size
; function body 142
-00016bb: 00 ; func body size (guess)
-00016bc: 00 ; local decl count
-00016bd: 43 ; f32.const
-00016be: 0000 803f ; f32 literal
-00016c2: a8 ; i32.trunc_s/f32
-00016c3: 1a ; drop
-00016c4: 0b ; end
-00016bb: 09 ; FIXUP func body size
+00016b7: 00 ; func body size (guess)
+00016b8: 00 ; local decl count
+00016b9: 43 ; f32.const
+00016ba: 0000 803f ; f32 literal
+00016be: a8 ; i32.trunc_s/f32
+00016bf: 1a ; drop
+00016c0: 0b ; end
+00016b7: 09 ; FIXUP func body size
; function body 143
-00016c5: 00 ; func body size (guess)
-00016c6: 00 ; local decl count
-00016c7: 43 ; f32.const
-00016c8: 0000 803f ; f32 literal
-00016cc: a9 ; i32.trunc_u/f32
-00016cd: 1a ; drop
-00016ce: 0b ; end
-00016c5: 09 ; FIXUP func body size
+00016c1: 00 ; func body size (guess)
+00016c2: 00 ; local decl count
+00016c3: 43 ; f32.const
+00016c4: 0000 803f ; f32 literal
+00016c8: a9 ; i32.trunc_u/f32
+00016c9: 1a ; drop
+00016ca: 0b ; end
+00016c1: 09 ; FIXUP func body size
; function body 144
-00016cf: 00 ; func body size (guess)
-00016d0: 00 ; local decl count
-00016d1: 44 ; f64.const
-00016d2: 0000 0000 0000 f03f ; f64 literal
-00016da: aa ; i32.trunc_s/f64
-00016db: 1a ; drop
-00016dc: 0b ; end
-00016cf: 0d ; FIXUP func body size
+00016cb: 00 ; func body size (guess)
+00016cc: 00 ; local decl count
+00016cd: 44 ; f64.const
+00016ce: 0000 0000 0000 f03f ; f64 literal
+00016d6: aa ; i32.trunc_s/f64
+00016d7: 1a ; drop
+00016d8: 0b ; end
+00016cb: 0d ; FIXUP func body size
; function body 145
-00016dd: 00 ; func body size (guess)
-00016de: 00 ; local decl count
-00016df: 44 ; f64.const
-00016e0: 0000 0000 0000 f03f ; f64 literal
-00016e8: ab ; i32.trunc_u/f64
-00016e9: 1a ; drop
-00016ea: 0b ; end
-00016dd: 0d ; FIXUP func body size
+00016d9: 00 ; func body size (guess)
+00016da: 00 ; local decl count
+00016db: 44 ; f64.const
+00016dc: 0000 0000 0000 f03f ; f64 literal
+00016e4: ab ; i32.trunc_u/f64
+00016e5: 1a ; drop
+00016e6: 0b ; end
+00016d9: 0d ; FIXUP func body size
; function body 146
-00016eb: 00 ; func body size (guess)
-00016ec: 00 ; local decl count
-00016ed: 41 ; i32.const
-00016ee: 01 ; i32 literal
-00016ef: ac ; i64.extend_s/i32
-00016f0: 1a ; drop
-00016f1: 0b ; end
-00016eb: 06 ; FIXUP func body size
+00016e7: 00 ; func body size (guess)
+00016e8: 00 ; local decl count
+00016e9: 41 ; i32.const
+00016ea: 01 ; i32 literal
+00016eb: ac ; i64.extend_s/i32
+00016ec: 1a ; drop
+00016ed: 0b ; end
+00016e7: 06 ; FIXUP func body size
; function body 147
-00016f2: 00 ; func body size (guess)
-00016f3: 00 ; local decl count
-00016f4: 41 ; i32.const
-00016f5: 01 ; i32 literal
-00016f6: ad ; i64.extend_u/i32
-00016f7: 1a ; drop
-00016f8: 0b ; end
-00016f2: 06 ; FIXUP func body size
+00016ee: 00 ; func body size (guess)
+00016ef: 00 ; local decl count
+00016f0: 41 ; i32.const
+00016f1: 01 ; i32 literal
+00016f2: ad ; i64.extend_u/i32
+00016f3: 1a ; drop
+00016f4: 0b ; end
+00016ee: 06 ; FIXUP func body size
; function body 148
-00016f9: 00 ; func body size (guess)
-00016fa: 00 ; local decl count
-00016fb: 43 ; f32.const
-00016fc: 0000 803f ; f32 literal
-0001700: ae ; i64.trunc_s/f32
-0001701: 1a ; drop
-0001702: 0b ; end
-00016f9: 09 ; FIXUP func body size
+00016f5: 00 ; func body size (guess)
+00016f6: 00 ; local decl count
+00016f7: 43 ; f32.const
+00016f8: 0000 803f ; f32 literal
+00016fc: ae ; i64.trunc_s/f32
+00016fd: 1a ; drop
+00016fe: 0b ; end
+00016f5: 09 ; FIXUP func body size
; function body 149
-0001703: 00 ; func body size (guess)
-0001704: 00 ; local decl count
-0001705: 43 ; f32.const
-0001706: 0000 803f ; f32 literal
-000170a: af ; i64.trunc_u/f32
-000170b: 1a ; drop
-000170c: 0b ; end
-0001703: 09 ; FIXUP func body size
+00016ff: 00 ; func body size (guess)
+0001700: 00 ; local decl count
+0001701: 43 ; f32.const
+0001702: 0000 803f ; f32 literal
+0001706: af ; i64.trunc_u/f32
+0001707: 1a ; drop
+0001708: 0b ; end
+00016ff: 09 ; FIXUP func body size
; function body 150
-000170d: 00 ; func body size (guess)
-000170e: 00 ; local decl count
-000170f: 44 ; f64.const
-0001710: 0000 0000 0000 f03f ; f64 literal
-0001718: b0 ; i64.trunc_s/f64
-0001719: 1a ; drop
-000171a: 0b ; end
-000170d: 0d ; FIXUP func body size
+0001709: 00 ; func body size (guess)
+000170a: 00 ; local decl count
+000170b: 44 ; f64.const
+000170c: 0000 0000 0000 f03f ; f64 literal
+0001714: b0 ; i64.trunc_s/f64
+0001715: 1a ; drop
+0001716: 0b ; end
+0001709: 0d ; FIXUP func body size
; function body 151
-000171b: 00 ; func body size (guess)
-000171c: 00 ; local decl count
-000171d: 44 ; f64.const
-000171e: 0000 0000 0000 f03f ; f64 literal
-0001726: b1 ; i64.trunc_u/f64
-0001727: 1a ; drop
-0001728: 0b ; end
-000171b: 0d ; FIXUP func body size
+0001717: 00 ; func body size (guess)
+0001718: 00 ; local decl count
+0001719: 44 ; f64.const
+000171a: 0000 0000 0000 f03f ; f64 literal
+0001722: b1 ; i64.trunc_u/f64
+0001723: 1a ; drop
+0001724: 0b ; end
+0001717: 0d ; FIXUP func body size
; function body 152
-0001729: 00 ; func body size (guess)
-000172a: 00 ; local decl count
-000172b: 41 ; i32.const
-000172c: 01 ; i32 literal
-000172d: b2 ; f32.convert_s/i32
-000172e: 1a ; drop
-000172f: 0b ; end
-0001729: 06 ; FIXUP func body size
+0001725: 00 ; func body size (guess)
+0001726: 00 ; local decl count
+0001727: 41 ; i32.const
+0001728: 01 ; i32 literal
+0001729: b2 ; f32.convert_s/i32
+000172a: 1a ; drop
+000172b: 0b ; end
+0001725: 06 ; FIXUP func body size
; function body 153
-0001730: 00 ; func body size (guess)
-0001731: 00 ; local decl count
-0001732: 41 ; i32.const
-0001733: 01 ; i32 literal
-0001734: b3 ; f32.convert_u/i32
-0001735: 1a ; drop
-0001736: 0b ; end
-0001730: 06 ; FIXUP func body size
+000172c: 00 ; func body size (guess)
+000172d: 00 ; local decl count
+000172e: 41 ; i32.const
+000172f: 01 ; i32 literal
+0001730: b3 ; f32.convert_u/i32
+0001731: 1a ; drop
+0001732: 0b ; end
+000172c: 06 ; FIXUP func body size
; function body 154
-0001737: 00 ; func body size (guess)
-0001738: 00 ; local decl count
-0001739: 42 ; i64.const
-000173a: 01 ; i64 literal
-000173b: b4 ; f32.convert_s/i64
-000173c: 1a ; drop
-000173d: 0b ; end
-0001737: 06 ; FIXUP func body size
+0001733: 00 ; func body size (guess)
+0001734: 00 ; local decl count
+0001735: 42 ; i64.const
+0001736: 01 ; i64 literal
+0001737: b4 ; f32.convert_s/i64
+0001738: 1a ; drop
+0001739: 0b ; end
+0001733: 06 ; FIXUP func body size
; function body 155
-000173e: 00 ; func body size (guess)
-000173f: 00 ; local decl count
-0001740: 42 ; i64.const
-0001741: 01 ; i64 literal
-0001742: b5 ; f32.convert_u/i64
-0001743: 1a ; drop
-0001744: 0b ; end
-000173e: 06 ; FIXUP func body size
+000173a: 00 ; func body size (guess)
+000173b: 00 ; local decl count
+000173c: 42 ; i64.const
+000173d: 01 ; i64 literal
+000173e: b5 ; f32.convert_u/i64
+000173f: 1a ; drop
+0001740: 0b ; end
+000173a: 06 ; FIXUP func body size
; function body 156
-0001745: 00 ; func body size (guess)
-0001746: 00 ; local decl count
-0001747: 44 ; f64.const
-0001748: 0000 0000 0000 f03f ; f64 literal
-0001750: b6 ; f32.demote/f64
-0001751: 1a ; drop
-0001752: 0b ; end
-0001745: 0d ; FIXUP func body size
+0001741: 00 ; func body size (guess)
+0001742: 00 ; local decl count
+0001743: 44 ; f64.const
+0001744: 0000 0000 0000 f03f ; f64 literal
+000174c: b6 ; f32.demote/f64
+000174d: 1a ; drop
+000174e: 0b ; end
+0001741: 0d ; FIXUP func body size
; function body 157
-0001753: 00 ; func body size (guess)
-0001754: 00 ; local decl count
-0001755: 41 ; i32.const
-0001756: 01 ; i32 literal
-0001757: b7 ; f64.convert_s/i32
-0001758: 1a ; drop
-0001759: 0b ; end
-0001753: 06 ; FIXUP func body size
+000174f: 00 ; func body size (guess)
+0001750: 00 ; local decl count
+0001751: 41 ; i32.const
+0001752: 01 ; i32 literal
+0001753: b7 ; f64.convert_s/i32
+0001754: 1a ; drop
+0001755: 0b ; end
+000174f: 06 ; FIXUP func body size
; function body 158
-000175a: 00 ; func body size (guess)
-000175b: 00 ; local decl count
-000175c: 41 ; i32.const
-000175d: 01 ; i32 literal
-000175e: b8 ; f64.convert_u/i32
-000175f: 1a ; drop
-0001760: 0b ; end
-000175a: 06 ; FIXUP func body size
+0001756: 00 ; func body size (guess)
+0001757: 00 ; local decl count
+0001758: 41 ; i32.const
+0001759: 01 ; i32 literal
+000175a: b8 ; f64.convert_u/i32
+000175b: 1a ; drop
+000175c: 0b ; end
+0001756: 06 ; FIXUP func body size
; function body 159
-0001761: 00 ; func body size (guess)
-0001762: 00 ; local decl count
-0001763: 42 ; i64.const
-0001764: 01 ; i64 literal
-0001765: b9 ; f64.convert_s/i64
-0001766: 1a ; drop
-0001767: 0b ; end
-0001761: 06 ; FIXUP func body size
+000175d: 00 ; func body size (guess)
+000175e: 00 ; local decl count
+000175f: 42 ; i64.const
+0001760: 01 ; i64 literal
+0001761: b9 ; f64.convert_s/i64
+0001762: 1a ; drop
+0001763: 0b ; end
+000175d: 06 ; FIXUP func body size
; function body 160
-0001768: 00 ; func body size (guess)
-0001769: 00 ; local decl count
-000176a: 42 ; i64.const
-000176b: 01 ; i64 literal
-000176c: ba ; f64.convert_u/i64
-000176d: 1a ; drop
-000176e: 0b ; end
-0001768: 06 ; FIXUP func body size
+0001764: 00 ; func body size (guess)
+0001765: 00 ; local decl count
+0001766: 42 ; i64.const
+0001767: 01 ; i64 literal
+0001768: ba ; f64.convert_u/i64
+0001769: 1a ; drop
+000176a: 0b ; end
+0001764: 06 ; FIXUP func body size
; function body 161
-000176f: 00 ; func body size (guess)
-0001770: 00 ; local decl count
-0001771: 43 ; f32.const
-0001772: 0000 803f ; f32 literal
-0001776: bb ; f64.promote/f32
-0001777: 1a ; drop
-0001778: 0b ; end
-000176f: 09 ; FIXUP func body size
+000176b: 00 ; func body size (guess)
+000176c: 00 ; local decl count
+000176d: 43 ; f32.const
+000176e: 0000 803f ; f32 literal
+0001772: bb ; f64.promote/f32
+0001773: 1a ; drop
+0001774: 0b ; end
+000176b: 09 ; FIXUP func body size
; function body 162
-0001779: 00 ; func body size (guess)
-000177a: 00 ; local decl count
-000177b: 41 ; i32.const
-000177c: 01 ; i32 literal
-000177d: be ; f32.reinterpret/i32
-000177e: 1a ; drop
-000177f: 0b ; end
-0001779: 06 ; FIXUP func body size
+0001775: 00 ; func body size (guess)
+0001776: 00 ; local decl count
+0001777: 41 ; i32.const
+0001778: 01 ; i32 literal
+0001779: be ; f32.reinterpret/i32
+000177a: 1a ; drop
+000177b: 0b ; end
+0001775: 06 ; FIXUP func body size
; function body 163
-0001780: 00 ; func body size (guess)
-0001781: 00 ; local decl count
-0001782: 43 ; f32.const
-0001783: 0000 803f ; f32 literal
-0001787: bc ; i32.reinterpret/f32
-0001788: 1a ; drop
-0001789: 0b ; end
-0001780: 09 ; FIXUP func body size
+000177c: 00 ; func body size (guess)
+000177d: 00 ; local decl count
+000177e: 43 ; f32.const
+000177f: 0000 803f ; f32 literal
+0001783: bc ; i32.reinterpret/f32
+0001784: 1a ; drop
+0001785: 0b ; end
+000177c: 09 ; FIXUP func body size
; function body 164
-000178a: 00 ; func body size (guess)
-000178b: 00 ; local decl count
-000178c: 42 ; i64.const
-000178d: 01 ; i64 literal
-000178e: bf ; f64.reinterpret/i64
-000178f: 1a ; drop
-0001790: 0b ; end
-000178a: 06 ; FIXUP func body size
+0001786: 00 ; func body size (guess)
+0001787: 00 ; local decl count
+0001788: 42 ; i64.const
+0001789: 01 ; i64 literal
+000178a: bf ; f64.reinterpret/i64
+000178b: 1a ; drop
+000178c: 0b ; end
+0001786: 06 ; FIXUP func body size
; function body 165
-0001791: 00 ; func body size (guess)
-0001792: 00 ; local decl count
-0001793: 44 ; f64.const
-0001794: 0000 0000 0000 f03f ; f64 literal
-000179c: bd ; i64.reinterpret/f64
-000179d: 1a ; drop
-000179e: 0b ; end
-0001791: 0d ; FIXUP func body size
+000178d: 00 ; func body size (guess)
+000178e: 00 ; local decl count
+000178f: 44 ; f64.const
+0001790: 0000 0000 0000 f03f ; f64 literal
+0001798: bd ; i64.reinterpret/f64
+0001799: 1a ; drop
+000179a: 0b ; end
+000178d: 0d ; FIXUP func body size
; function body 166
-000179f: 00 ; func body size (guess)
-00017a0: 00 ; local decl count
-00017a1: 41 ; i32.const
-00017a2: 01 ; i32 literal
-00017a3: c0 ; i32.extend8_s
-00017a4: 1a ; drop
-00017a5: 0b ; end
-000179f: 06 ; FIXUP func body size
+000179b: 00 ; func body size (guess)
+000179c: 00 ; local decl count
+000179d: 41 ; i32.const
+000179e: 01 ; i32 literal
+000179f: c0 ; i32.extend8_s
+00017a0: 1a ; drop
+00017a1: 0b ; end
+000179b: 06 ; FIXUP func body size
; function body 167
-00017a6: 00 ; func body size (guess)
-00017a7: 00 ; local decl count
-00017a8: 41 ; i32.const
-00017a9: 01 ; i32 literal
-00017aa: c1 ; i32.extend16_s
-00017ab: 1a ; drop
-00017ac: 0b ; end
-00017a6: 06 ; FIXUP func body size
+00017a2: 00 ; func body size (guess)
+00017a3: 00 ; local decl count
+00017a4: 41 ; i32.const
+00017a5: 01 ; i32 literal
+00017a6: c1 ; i32.extend16_s
+00017a7: 1a ; drop
+00017a8: 0b ; end
+00017a2: 06 ; FIXUP func body size
; function body 168
-00017ad: 00 ; func body size (guess)
-00017ae: 00 ; local decl count
-00017af: 42 ; i64.const
-00017b0: 01 ; i64 literal
-00017b1: c2 ; i64.extend8_s
-00017b2: 1a ; drop
-00017b3: 0b ; end
-00017ad: 06 ; FIXUP func body size
+00017a9: 00 ; func body size (guess)
+00017aa: 00 ; local decl count
+00017ab: 42 ; i64.const
+00017ac: 01 ; i64 literal
+00017ad: c2 ; i64.extend8_s
+00017ae: 1a ; drop
+00017af: 0b ; end
+00017a9: 06 ; FIXUP func body size
; function body 169
-00017b4: 00 ; func body size (guess)
-00017b5: 00 ; local decl count
-00017b6: 42 ; i64.const
-00017b7: 01 ; i64 literal
-00017b8: c3 ; i64.extend16_s
-00017b9: 1a ; drop
-00017ba: 0b ; end
-00017b4: 06 ; FIXUP func body size
+00017b0: 00 ; func body size (guess)
+00017b1: 00 ; local decl count
+00017b2: 42 ; i64.const
+00017b3: 01 ; i64 literal
+00017b4: c3 ; i64.extend16_s
+00017b5: 1a ; drop
+00017b6: 0b ; end
+00017b0: 06 ; FIXUP func body size
; function body 170
-00017bb: 00 ; func body size (guess)
-00017bc: 00 ; local decl count
-00017bd: 42 ; i64.const
-00017be: 01 ; i64 literal
-00017bf: c4 ; i64.extend32_s
-00017c0: 1a ; drop
-00017c1: 0b ; end
-00017bb: 06 ; FIXUP func body size
+00017b7: 00 ; func body size (guess)
+00017b8: 00 ; local decl count
+00017b9: 42 ; i64.const
+00017ba: 01 ; i64 literal
+00017bb: c4 ; i64.extend32_s
+00017bc: 1a ; drop
+00017bd: 0b ; end
+00017b7: 06 ; FIXUP func body size
; function body 171
-00017c2: 00 ; func body size (guess)
-00017c3: 01 ; local decl count
-00017c4: 01 ; local type count
-00017c5: 7f ; i32
-00017c6: 0b ; end
-00017c2: 04 ; FIXUP func body size
+00017be: 00 ; func body size (guess)
+00017bf: 01 ; local decl count
+00017c0: 01 ; local type count
+00017c1: 7f ; i32
+00017c2: 0b ; end
+00017be: 04 ; FIXUP func body size
; function body 172
-00017c7: 00 ; func body size (guess)
-00017c8: 00 ; local decl count
-00017c9: 41 ; i32.const
-00017ca: 01 ; i32 literal
-00017cb: 0d ; br_if
-00017cc: 00 ; break depth
-00017cd: 0b ; end
-00017c7: 06 ; FIXUP func body size
+00017c3: 00 ; func body size (guess)
+00017c4: 00 ; local decl count
+00017c5: 41 ; i32.const
+00017c6: 01 ; i32 literal
+00017c7: 0d ; br_if
+00017c8: 00 ; break depth
+00017c9: 0b ; end
+00017c3: 06 ; FIXUP func body size
; function body 173
-00017ce: 00 ; func body size (guess)
-00017cf: 00 ; local decl count
-00017d0: 41 ; i32.const
-00017d1: 01 ; i32 literal
-00017d2: 10 ; call
-00017d3: 00 ; function index
-00017d4: 0b ; end
-00017ce: 06 ; FIXUP func body size
+00017ca: 00 ; func body size (guess)
+00017cb: 00 ; local decl count
+00017cc: 41 ; i32.const
+00017cd: 01 ; i32 literal
+00017ce: 10 ; call
+00017cf: 00 ; function index
+00017d0: 0b ; end
+00017ca: 06 ; FIXUP func body size
; function body 174
-00017d5: 00 ; func body size (guess)
-00017d6: 00 ; local decl count
-00017d7: 41 ; i32.const
-00017d8: 01 ; i32 literal
-00017d9: 0e ; br_table
-00017da: 00 ; num targets
-00017db: 00 ; break depth for default
-00017dc: 0b ; end
-00017d5: 07 ; FIXUP func body size
+00017d1: 00 ; func body size (guess)
+00017d2: 00 ; local decl count
+00017d3: 41 ; i32.const
+00017d4: 01 ; i32 literal
+00017d5: 0e ; br_table
+00017d6: 00 ; num targets
+00017d7: 00 ; break depth for default
+00017d8: 0b ; end
+00017d1: 07 ; FIXUP func body size
; function body 175
-00017dd: 00 ; func body size (guess)
-00017de: 00 ; local decl count
-00017df: 02 ; block
-00017e0: 7f ; i32
-00017e1: 41 ; i32.const
-00017e2: 01 ; i32 literal
-00017e3: 41 ; i32.const
-00017e4: 02 ; i32 literal
-00017e5: 0c ; br
-00017e6: 00 ; break depth
-00017e7: 0b ; end
-00017e8: 1a ; drop
-00017e9: 0b ; end
-00017dd: 0c ; FIXUP func body size
+00017d9: 00 ; func body size (guess)
+00017da: 00 ; local decl count
+00017db: 02 ; block
+00017dc: 7f ; i32
+00017dd: 41 ; i32.const
+00017de: 01 ; i32 literal
+00017df: 41 ; i32.const
+00017e0: 02 ; i32 literal
+00017e1: 0c ; br
+00017e2: 00 ; break depth
+00017e3: 0b ; end
+00017e4: 1a ; drop
+00017e5: 0b ; end
+00017d9: 0c ; FIXUP func body size
; function body 176
-00017ea: 00 ; func body size (guess)
-00017eb: 00 ; local decl count
-00017ec: 43 ; f32.const
-00017ed: 0000 803f ; f32 literal
-00017f1: fc ; prefix
-00017f2: 00 ; i32.trunc_s:sat/f32
-00017f3: 1a ; drop
-00017f4: 0b ; end
-00017ea: 0a ; FIXUP func body size
+00017e6: 00 ; func body size (guess)
+00017e7: 00 ; local decl count
+00017e8: 43 ; f32.const
+00017e9: 0000 803f ; f32 literal
+00017ed: fc ; prefix
+00017ee: 00 ; i32.trunc_s:sat/f32
+00017ef: 1a ; drop
+00017f0: 0b ; end
+00017e6: 0a ; FIXUP func body size
; function body 177
-00017f5: 00 ; func body size (guess)
-00017f6: 00 ; local decl count
-00017f7: 43 ; f32.const
-00017f8: 0000 803f ; f32 literal
-00017fc: fc ; prefix
-00017fd: 01 ; i32.trunc_u:sat/f32
-00017fe: 1a ; drop
-00017ff: 0b ; end
-00017f5: 0a ; FIXUP func body size
+00017f1: 00 ; func body size (guess)
+00017f2: 00 ; local decl count
+00017f3: 43 ; f32.const
+00017f4: 0000 803f ; f32 literal
+00017f8: fc ; prefix
+00017f9: 01 ; i32.trunc_u:sat/f32
+00017fa: 1a ; drop
+00017fb: 0b ; end
+00017f1: 0a ; FIXUP func body size
; function body 178
-0001800: 00 ; func body size (guess)
-0001801: 00 ; local decl count
-0001802: 44 ; f64.const
-0001803: 0000 0000 0000 f03f ; f64 literal
-000180b: fc ; prefix
-000180c: 02 ; i32.trunc_s:sat/f64
-000180d: 1a ; drop
-000180e: 0b ; end
-0001800: 0e ; FIXUP func body size
+00017fc: 00 ; func body size (guess)
+00017fd: 00 ; local decl count
+00017fe: 44 ; f64.const
+00017ff: 0000 0000 0000 f03f ; f64 literal
+0001807: fc ; prefix
+0001808: 02 ; i32.trunc_s:sat/f64
+0001809: 1a ; drop
+000180a: 0b ; end
+00017fc: 0e ; FIXUP func body size
; function body 179
-000180f: 00 ; func body size (guess)
-0001810: 00 ; local decl count
-0001811: 44 ; f64.const
-0001812: 0000 0000 0000 f03f ; f64 literal
-000181a: fc ; prefix
-000181b: 03 ; i32.trunc_u:sat/f64
-000181c: 1a ; drop
-000181d: 0b ; end
-000180f: 0e ; FIXUP func body size
+000180b: 00 ; func body size (guess)
+000180c: 00 ; local decl count
+000180d: 44 ; f64.const
+000180e: 0000 0000 0000 f03f ; f64 literal
+0001816: fc ; prefix
+0001817: 03 ; i32.trunc_u:sat/f64
+0001818: 1a ; drop
+0001819: 0b ; end
+000180b: 0e ; FIXUP func body size
; function body 180
-000181e: 00 ; func body size (guess)
-000181f: 00 ; local decl count
-0001820: 43 ; f32.const
-0001821: 0000 803f ; f32 literal
-0001825: fc ; prefix
-0001826: 04 ; i64.trunc_s:sat/f32
-0001827: 1a ; drop
-0001828: 0b ; end
-000181e: 0a ; FIXUP func body size
+000181a: 00 ; func body size (guess)
+000181b: 00 ; local decl count
+000181c: 43 ; f32.const
+000181d: 0000 803f ; f32 literal
+0001821: fc ; prefix
+0001822: 04 ; i64.trunc_s:sat/f32
+0001823: 1a ; drop
+0001824: 0b ; end
+000181a: 0a ; FIXUP func body size
; function body 181
-0001829: 00 ; func body size (guess)
-000182a: 00 ; local decl count
-000182b: 43 ; f32.const
-000182c: 0000 803f ; f32 literal
-0001830: fc ; prefix
-0001831: 05 ; i64.trunc_u:sat/f32
-0001832: 1a ; drop
-0001833: 0b ; end
-0001829: 0a ; FIXUP func body size
+0001825: 00 ; func body size (guess)
+0001826: 00 ; local decl count
+0001827: 43 ; f32.const
+0001828: 0000 803f ; f32 literal
+000182c: fc ; prefix
+000182d: 05 ; i64.trunc_u:sat/f32
+000182e: 1a ; drop
+000182f: 0b ; end
+0001825: 0a ; FIXUP func body size
; function body 182
-0001834: 00 ; func body size (guess)
-0001835: 00 ; local decl count
-0001836: 44 ; f64.const
-0001837: 0000 0000 0000 f03f ; f64 literal
-000183f: fc ; prefix
-0001840: 06 ; i64.trunc_s:sat/f64
-0001841: 1a ; drop
-0001842: 0b ; end
-0001834: 0e ; FIXUP func body size
+0001830: 00 ; func body size (guess)
+0001831: 00 ; local decl count
+0001832: 44 ; f64.const
+0001833: 0000 0000 0000 f03f ; f64 literal
+000183b: fc ; prefix
+000183c: 06 ; i64.trunc_s:sat/f64
+000183d: 1a ; drop
+000183e: 0b ; end
+0001830: 0e ; FIXUP func body size
; function body 183
-0001843: 00 ; func body size (guess)
-0001844: 00 ; local decl count
-0001845: 44 ; f64.const
-0001846: 0000 0000 0000 f03f ; f64 literal
-000184e: fc ; prefix
-000184f: 07 ; i64.trunc_u:sat/f64
-0001850: 1a ; drop
-0001851: 0b ; end
-0001843: 0e ; FIXUP func body size
+000183f: 00 ; func body size (guess)
+0001840: 00 ; local decl count
+0001841: 44 ; f64.const
+0001842: 0000 0000 0000 f03f ; f64 literal
+000184a: fc ; prefix
+000184b: 07 ; i64.trunc_u:sat/f64
+000184c: 1a ; drop
+000184d: 0b ; end
+000183f: 0e ; FIXUP func body size
; function body 184
-0001852: 00 ; func body size (guess)
-0001853: 00 ; local decl count
-0001854: 41 ; i32.const
-0001855: 01 ; i32 literal
-0001856: fe ; prefix
-0001857: 10 ; i32.atomic.load
-0001858: 02 ; alignment
-0001859: 03 ; memory offset
-000185a: 1a ; drop
-000185b: 0b ; end
-0001852: 09 ; FIXUP func body size
+000184e: 00 ; func body size (guess)
+000184f: 00 ; local decl count
+0001850: 41 ; i32.const
+0001851: 01 ; i32 literal
+0001852: fe ; prefix
+0001853: 10 ; i32.atomic.load
+0001854: 02 ; alignment
+0001855: 03 ; memory offset
+0001856: 1a ; drop
+0001857: 0b ; end
+000184e: 09 ; FIXUP func body size
; function body 185
-000185c: 00 ; func body size (guess)
-000185d: 00 ; local decl count
-000185e: 41 ; i32.const
-000185f: 01 ; i32 literal
-0001860: fe ; prefix
-0001861: 11 ; i64.atomic.load
-0001862: 03 ; alignment
-0001863: 07 ; memory offset
-0001864: 1a ; drop
-0001865: 0b ; end
-000185c: 09 ; FIXUP func body size
+0001858: 00 ; func body size (guess)
+0001859: 00 ; local decl count
+000185a: 41 ; i32.const
+000185b: 01 ; i32 literal
+000185c: fe ; prefix
+000185d: 11 ; i64.atomic.load
+000185e: 03 ; alignment
+000185f: 07 ; memory offset
+0001860: 1a ; drop
+0001861: 0b ; end
+0001858: 09 ; FIXUP func body size
; function body 186
-0001866: 00 ; func body size (guess)
-0001867: 00 ; local decl count
-0001868: 41 ; i32.const
-0001869: 01 ; i32 literal
-000186a: fe ; prefix
-000186b: 12 ; i32.atomic.load8_u
-000186c: 00 ; alignment
-000186d: 03 ; memory offset
-000186e: 1a ; drop
-000186f: 0b ; end
-0001866: 09 ; FIXUP func body size
+0001862: 00 ; func body size (guess)
+0001863: 00 ; local decl count
+0001864: 41 ; i32.const
+0001865: 01 ; i32 literal
+0001866: fe ; prefix
+0001867: 12 ; i32.atomic.load8_u
+0001868: 00 ; alignment
+0001869: 03 ; memory offset
+000186a: 1a ; drop
+000186b: 0b ; end
+0001862: 09 ; FIXUP func body size
; function body 187
-0001870: 00 ; func body size (guess)
-0001871: 00 ; local decl count
-0001872: 41 ; i32.const
-0001873: 01 ; i32 literal
-0001874: fe ; prefix
-0001875: 13 ; i32.atomic.load16_u
-0001876: 01 ; alignment
-0001877: 03 ; memory offset
-0001878: 1a ; drop
-0001879: 0b ; end
-0001870: 09 ; FIXUP func body size
+000186c: 00 ; func body size (guess)
+000186d: 00 ; local decl count
+000186e: 41 ; i32.const
+000186f: 01 ; i32 literal
+0001870: fe ; prefix
+0001871: 13 ; i32.atomic.load16_u
+0001872: 01 ; alignment
+0001873: 03 ; memory offset
+0001874: 1a ; drop
+0001875: 0b ; end
+000186c: 09 ; FIXUP func body size
; function body 188
-000187a: 00 ; func body size (guess)
-000187b: 00 ; local decl count
-000187c: 41 ; i32.const
-000187d: 01 ; i32 literal
-000187e: fe ; prefix
-000187f: 14 ; i64.atomic.load8_u
-0001880: 00 ; alignment
-0001881: 03 ; memory offset
-0001882: 1a ; drop
-0001883: 0b ; end
-000187a: 09 ; FIXUP func body size
+0001876: 00 ; func body size (guess)
+0001877: 00 ; local decl count
+0001878: 41 ; i32.const
+0001879: 01 ; i32 literal
+000187a: fe ; prefix
+000187b: 14 ; i64.atomic.load8_u
+000187c: 00 ; alignment
+000187d: 03 ; memory offset
+000187e: 1a ; drop
+000187f: 0b ; end
+0001876: 09 ; FIXUP func body size
; function body 189
-0001884: 00 ; func body size (guess)
-0001885: 00 ; local decl count
-0001886: 41 ; i32.const
-0001887: 01 ; i32 literal
-0001888: fe ; prefix
-0001889: 15 ; i64.atomic.load16_u
-000188a: 01 ; alignment
-000188b: 03 ; memory offset
-000188c: 1a ; drop
-000188d: 0b ; end
-0001884: 09 ; FIXUP func body size
+0001880: 00 ; func body size (guess)
+0001881: 00 ; local decl count
+0001882: 41 ; i32.const
+0001883: 01 ; i32 literal
+0001884: fe ; prefix
+0001885: 15 ; i64.atomic.load16_u
+0001886: 01 ; alignment
+0001887: 03 ; memory offset
+0001888: 1a ; drop
+0001889: 0b ; end
+0001880: 09 ; FIXUP func body size
; function body 190
-000188e: 00 ; func body size (guess)
-000188f: 00 ; local decl count
-0001890: 41 ; i32.const
-0001891: 01 ; i32 literal
-0001892: fe ; prefix
-0001893: 16 ; i64.atomic.load32_u
-0001894: 02 ; alignment
-0001895: 03 ; memory offset
-0001896: 1a ; drop
-0001897: 0b ; end
-000188e: 09 ; FIXUP func body size
+000188a: 00 ; func body size (guess)
+000188b: 00 ; local decl count
+000188c: 41 ; i32.const
+000188d: 01 ; i32 literal
+000188e: fe ; prefix
+000188f: 16 ; i64.atomic.load32_u
+0001890: 02 ; alignment
+0001891: 03 ; memory offset
+0001892: 1a ; drop
+0001893: 0b ; end
+000188a: 09 ; FIXUP func body size
; function body 191
-0001898: 00 ; func body size (guess)
-0001899: 00 ; local decl count
-000189a: 41 ; i32.const
-000189b: 01 ; i32 literal
-000189c: 41 ; i32.const
-000189d: 02 ; i32 literal
-000189e: fe ; prefix
-000189f: 17 ; i32.atomic.store
-00018a0: 02 ; alignment
-00018a1: 03 ; memory offset
-00018a2: 0b ; end
-0001898: 0a ; FIXUP func body size
+0001894: 00 ; func body size (guess)
+0001895: 00 ; local decl count
+0001896: 41 ; i32.const
+0001897: 01 ; i32 literal
+0001898: 41 ; i32.const
+0001899: 02 ; i32 literal
+000189a: fe ; prefix
+000189b: 17 ; i32.atomic.store
+000189c: 02 ; alignment
+000189d: 03 ; memory offset
+000189e: 0b ; end
+0001894: 0a ; FIXUP func body size
; function body 192
-00018a3: 00 ; func body size (guess)
-00018a4: 00 ; local decl count
-00018a5: 41 ; i32.const
-00018a6: 01 ; i32 literal
-00018a7: 42 ; i64.const
-00018a8: 02 ; i64 literal
-00018a9: fe ; prefix
-00018aa: 18 ; i64.atomic.store
-00018ab: 03 ; alignment
-00018ac: 07 ; memory offset
-00018ad: 0b ; end
-00018a3: 0a ; FIXUP func body size
+000189f: 00 ; func body size (guess)
+00018a0: 00 ; local decl count
+00018a1: 41 ; i32.const
+00018a2: 01 ; i32 literal
+00018a3: 42 ; i64.const
+00018a4: 02 ; i64 literal
+00018a5: fe ; prefix
+00018a6: 18 ; i64.atomic.store
+00018a7: 03 ; alignment
+00018a8: 07 ; memory offset
+00018a9: 0b ; end
+000189f: 0a ; FIXUP func body size
; function body 193
-00018ae: 00 ; func body size (guess)
-00018af: 00 ; local decl count
-00018b0: 41 ; i32.const
-00018b1: 01 ; i32 literal
-00018b2: 41 ; i32.const
-00018b3: 02 ; i32 literal
-00018b4: fe ; prefix
-00018b5: 19 ; i32.atomic.store8
-00018b6: 00 ; alignment
-00018b7: 03 ; memory offset
-00018b8: 0b ; end
-00018ae: 0a ; FIXUP func body size
+00018aa: 00 ; func body size (guess)
+00018ab: 00 ; local decl count
+00018ac: 41 ; i32.const
+00018ad: 01 ; i32 literal
+00018ae: 41 ; i32.const
+00018af: 02 ; i32 literal
+00018b0: fe ; prefix
+00018b1: 19 ; i32.atomic.store8
+00018b2: 00 ; alignment
+00018b3: 03 ; memory offset
+00018b4: 0b ; end
+00018aa: 0a ; FIXUP func body size
; function body 194
-00018b9: 00 ; func body size (guess)
-00018ba: 00 ; local decl count
-00018bb: 41 ; i32.const
-00018bc: 01 ; i32 literal
-00018bd: 41 ; i32.const
-00018be: 02 ; i32 literal
-00018bf: fe ; prefix
-00018c0: 1a ; i32.atomic.store16
-00018c1: 01 ; alignment
-00018c2: 03 ; memory offset
-00018c3: 0b ; end
-00018b9: 0a ; FIXUP func body size
+00018b5: 00 ; func body size (guess)
+00018b6: 00 ; local decl count
+00018b7: 41 ; i32.const
+00018b8: 01 ; i32 literal
+00018b9: 41 ; i32.const
+00018ba: 02 ; i32 literal
+00018bb: fe ; prefix
+00018bc: 1a ; i32.atomic.store16
+00018bd: 01 ; alignment
+00018be: 03 ; memory offset
+00018bf: 0b ; end
+00018b5: 0a ; FIXUP func body size
; function body 195
-00018c4: 00 ; func body size (guess)
-00018c5: 00 ; local decl count
-00018c6: 41 ; i32.const
-00018c7: 01 ; i32 literal
-00018c8: 42 ; i64.const
-00018c9: 02 ; i64 literal
-00018ca: fe ; prefix
-00018cb: 1b ; i64.atomic.store8
-00018cc: 00 ; alignment
-00018cd: 03 ; memory offset
-00018ce: 0b ; end
-00018c4: 0a ; FIXUP func body size
+00018c0: 00 ; func body size (guess)
+00018c1: 00 ; local decl count
+00018c2: 41 ; i32.const
+00018c3: 01 ; i32 literal
+00018c4: 42 ; i64.const
+00018c5: 02 ; i64 literal
+00018c6: fe ; prefix
+00018c7: 1b ; i64.atomic.store8
+00018c8: 00 ; alignment
+00018c9: 03 ; memory offset
+00018ca: 0b ; end
+00018c0: 0a ; FIXUP func body size
; function body 196
-00018cf: 00 ; func body size (guess)
-00018d0: 00 ; local decl count
-00018d1: 41 ; i32.const
-00018d2: 01 ; i32 literal
-00018d3: 42 ; i64.const
-00018d4: 02 ; i64 literal
-00018d5: fe ; prefix
-00018d6: 1c ; i64.atomic.store16
-00018d7: 01 ; alignment
-00018d8: 03 ; memory offset
-00018d9: 0b ; end
-00018cf: 0a ; FIXUP func body size
+00018cb: 00 ; func body size (guess)
+00018cc: 00 ; local decl count
+00018cd: 41 ; i32.const
+00018ce: 01 ; i32 literal
+00018cf: 42 ; i64.const
+00018d0: 02 ; i64 literal
+00018d1: fe ; prefix
+00018d2: 1c ; i64.atomic.store16
+00018d3: 01 ; alignment
+00018d4: 03 ; memory offset
+00018d5: 0b ; end
+00018cb: 0a ; FIXUP func body size
; function body 197
-00018da: 00 ; func body size (guess)
-00018db: 00 ; local decl count
-00018dc: 41 ; i32.const
-00018dd: 01 ; i32 literal
-00018de: 42 ; i64.const
-00018df: 02 ; i64 literal
-00018e0: fe ; prefix
-00018e1: 1d ; i64.atomic.store32
-00018e2: 02 ; alignment
-00018e3: 03 ; memory offset
-00018e4: 0b ; end
-00018da: 0a ; FIXUP func body size
+00018d6: 00 ; func body size (guess)
+00018d7: 00 ; local decl count
+00018d8: 41 ; i32.const
+00018d9: 01 ; i32 literal
+00018da: 42 ; i64.const
+00018db: 02 ; i64 literal
+00018dc: fe ; prefix
+00018dd: 1d ; i64.atomic.store32
+00018de: 02 ; alignment
+00018df: 03 ; memory offset
+00018e0: 0b ; end
+00018d6: 0a ; FIXUP func body size
; function body 198
-00018e5: 00 ; func body size (guess)
-00018e6: 00 ; local decl count
-00018e7: 41 ; i32.const
-00018e8: 01 ; i32 literal
-00018e9: 41 ; i32.const
-00018ea: 02 ; i32 literal
-00018eb: fe ; prefix
-00018ec: 1e ; i32.atomic.rmw.add
-00018ed: 02 ; alignment
-00018ee: 03 ; memory offset
-00018ef: 1a ; drop
-00018f0: 0b ; end
-00018e5: 0b ; FIXUP func body size
+00018e1: 00 ; func body size (guess)
+00018e2: 00 ; local decl count
+00018e3: 41 ; i32.const
+00018e4: 01 ; i32 literal
+00018e5: 41 ; i32.const
+00018e6: 02 ; i32 literal
+00018e7: fe ; prefix
+00018e8: 1e ; i32.atomic.rmw.add
+00018e9: 02 ; alignment
+00018ea: 03 ; memory offset
+00018eb: 1a ; drop
+00018ec: 0b ; end
+00018e1: 0b ; FIXUP func body size
; function body 199
-00018f1: 00 ; func body size (guess)
-00018f2: 00 ; local decl count
-00018f3: 41 ; i32.const
-00018f4: 01 ; i32 literal
-00018f5: 42 ; i64.const
-00018f6: 02 ; i64 literal
-00018f7: fe ; prefix
-00018f8: 1f ; i64.atomic.rmw.add
-00018f9: 03 ; alignment
-00018fa: 07 ; memory offset
-00018fb: 1a ; drop
-00018fc: 0b ; end
-00018f1: 0b ; FIXUP func body size
+00018ed: 00 ; func body size (guess)
+00018ee: 00 ; local decl count
+00018ef: 41 ; i32.const
+00018f0: 01 ; i32 literal
+00018f1: 42 ; i64.const
+00018f2: 02 ; i64 literal
+00018f3: fe ; prefix
+00018f4: 1f ; i64.atomic.rmw.add
+00018f5: 03 ; alignment
+00018f6: 07 ; memory offset
+00018f7: 1a ; drop
+00018f8: 0b ; end
+00018ed: 0b ; FIXUP func body size
; function body 200
-00018fd: 00 ; func body size (guess)
-00018fe: 00 ; local decl count
-00018ff: 41 ; i32.const
-0001900: 01 ; i32 literal
-0001901: 41 ; i32.const
-0001902: 02 ; i32 literal
-0001903: fe ; prefix
-0001904: 20 ; i32.atomic.rmw8_u.add
-0001905: 00 ; alignment
-0001906: 03 ; memory offset
-0001907: 1a ; drop
-0001908: 0b ; end
-00018fd: 0b ; FIXUP func body size
+00018f9: 00 ; func body size (guess)
+00018fa: 00 ; local decl count
+00018fb: 41 ; i32.const
+00018fc: 01 ; i32 literal
+00018fd: 41 ; i32.const
+00018fe: 02 ; i32 literal
+00018ff: fe ; prefix
+0001900: 20 ; i32.atomic.rmw8_u.add
+0001901: 00 ; alignment
+0001902: 03 ; memory offset
+0001903: 1a ; drop
+0001904: 0b ; end
+00018f9: 0b ; FIXUP func body size
; function body 201
-0001909: 00 ; func body size (guess)
-000190a: 00 ; local decl count
-000190b: 41 ; i32.const
-000190c: 01 ; i32 literal
-000190d: 41 ; i32.const
-000190e: 02 ; i32 literal
-000190f: fe ; prefix
-0001910: 21 ; i32.atomic.rmw16_u.add
-0001911: 01 ; alignment
-0001912: 03 ; memory offset
-0001913: 1a ; drop
-0001914: 0b ; end
-0001909: 0b ; FIXUP func body size
+0001905: 00 ; func body size (guess)
+0001906: 00 ; local decl count
+0001907: 41 ; i32.const
+0001908: 01 ; i32 literal
+0001909: 41 ; i32.const
+000190a: 02 ; i32 literal
+000190b: fe ; prefix
+000190c: 21 ; i32.atomic.rmw16_u.add
+000190d: 01 ; alignment
+000190e: 03 ; memory offset
+000190f: 1a ; drop
+0001910: 0b ; end
+0001905: 0b ; FIXUP func body size
; function body 202
-0001915: 00 ; func body size (guess)
-0001916: 00 ; local decl count
-0001917: 41 ; i32.const
-0001918: 01 ; i32 literal
-0001919: 42 ; i64.const
-000191a: 02 ; i64 literal
-000191b: fe ; prefix
-000191c: 22 ; i64.atomic.rmw8_u.add
-000191d: 00 ; alignment
-000191e: 03 ; memory offset
-000191f: 1a ; drop
-0001920: 0b ; end
-0001915: 0b ; FIXUP func body size
+0001911: 00 ; func body size (guess)
+0001912: 00 ; local decl count
+0001913: 41 ; i32.const
+0001914: 01 ; i32 literal
+0001915: 42 ; i64.const
+0001916: 02 ; i64 literal
+0001917: fe ; prefix
+0001918: 22 ; i64.atomic.rmw8_u.add
+0001919: 00 ; alignment
+000191a: 03 ; memory offset
+000191b: 1a ; drop
+000191c: 0b ; end
+0001911: 0b ; FIXUP func body size
; function body 203
-0001921: 00 ; func body size (guess)
-0001922: 00 ; local decl count
-0001923: 41 ; i32.const
-0001924: 01 ; i32 literal
-0001925: 42 ; i64.const
-0001926: 02 ; i64 literal
-0001927: fe ; prefix
-0001928: 23 ; i64.atomic.rmw16_u.add
-0001929: 01 ; alignment
-000192a: 03 ; memory offset
-000192b: 1a ; drop
-000192c: 0b ; end
-0001921: 0b ; FIXUP func body size
+000191d: 00 ; func body size (guess)
+000191e: 00 ; local decl count
+000191f: 41 ; i32.const
+0001920: 01 ; i32 literal
+0001921: 42 ; i64.const
+0001922: 02 ; i64 literal
+0001923: fe ; prefix
+0001924: 23 ; i64.atomic.rmw16_u.add
+0001925: 01 ; alignment
+0001926: 03 ; memory offset
+0001927: 1a ; drop
+0001928: 0b ; end
+000191d: 0b ; FIXUP func body size
; function body 204
-000192d: 00 ; func body size (guess)
-000192e: 00 ; local decl count
-000192f: 41 ; i32.const
-0001930: 01 ; i32 literal
-0001931: 42 ; i64.const
-0001932: 02 ; i64 literal
-0001933: fe ; prefix
-0001934: 24 ; i64.atomic.rmw32_u.add
-0001935: 02 ; alignment
-0001936: 03 ; memory offset
-0001937: 1a ; drop
-0001938: 0b ; end
-000192d: 0b ; FIXUP func body size
+0001929: 00 ; func body size (guess)
+000192a: 00 ; local decl count
+000192b: 41 ; i32.const
+000192c: 01 ; i32 literal
+000192d: 42 ; i64.const
+000192e: 02 ; i64 literal
+000192f: fe ; prefix
+0001930: 24 ; i64.atomic.rmw32_u.add
+0001931: 02 ; alignment
+0001932: 03 ; memory offset
+0001933: 1a ; drop
+0001934: 0b ; end
+0001929: 0b ; FIXUP func body size
; function body 205
-0001939: 00 ; func body size (guess)
-000193a: 00 ; local decl count
-000193b: 41 ; i32.const
-000193c: 01 ; i32 literal
-000193d: 41 ; i32.const
-000193e: 02 ; i32 literal
-000193f: fe ; prefix
-0001940: 25 ; i32.atomic.rmw.sub
-0001941: 02 ; alignment
-0001942: 03 ; memory offset
-0001943: 1a ; drop
-0001944: 0b ; end
-0001939: 0b ; FIXUP func body size
+0001935: 00 ; func body size (guess)
+0001936: 00 ; local decl count
+0001937: 41 ; i32.const
+0001938: 01 ; i32 literal
+0001939: 41 ; i32.const
+000193a: 02 ; i32 literal
+000193b: fe ; prefix
+000193c: 25 ; i32.atomic.rmw.sub
+000193d: 02 ; alignment
+000193e: 03 ; memory offset
+000193f: 1a ; drop
+0001940: 0b ; end
+0001935: 0b ; FIXUP func body size
; function body 206
-0001945: 00 ; func body size (guess)
-0001946: 00 ; local decl count
-0001947: 41 ; i32.const
-0001948: 01 ; i32 literal
-0001949: 42 ; i64.const
-000194a: 02 ; i64 literal
-000194b: fe ; prefix
-000194c: 26 ; i64.atomic.rmw.sub
-000194d: 03 ; alignment
-000194e: 07 ; memory offset
-000194f: 1a ; drop
-0001950: 0b ; end
-0001945: 0b ; FIXUP func body size
+0001941: 00 ; func body size (guess)
+0001942: 00 ; local decl count
+0001943: 41 ; i32.const
+0001944: 01 ; i32 literal
+0001945: 42 ; i64.const
+0001946: 02 ; i64 literal
+0001947: fe ; prefix
+0001948: 26 ; i64.atomic.rmw.sub
+0001949: 03 ; alignment
+000194a: 07 ; memory offset
+000194b: 1a ; drop
+000194c: 0b ; end
+0001941: 0b ; FIXUP func body size
; function body 207
-0001951: 00 ; func body size (guess)
-0001952: 00 ; local decl count
-0001953: 41 ; i32.const
-0001954: 01 ; i32 literal
-0001955: 41 ; i32.const
-0001956: 02 ; i32 literal
-0001957: fe ; prefix
-0001958: 27 ; i32.atomic.rmw8_u.sub
-0001959: 00 ; alignment
-000195a: 03 ; memory offset
-000195b: 1a ; drop
-000195c: 0b ; end
-0001951: 0b ; FIXUP func body size
+000194d: 00 ; func body size (guess)
+000194e: 00 ; local decl count
+000194f: 41 ; i32.const
+0001950: 01 ; i32 literal
+0001951: 41 ; i32.const
+0001952: 02 ; i32 literal
+0001953: fe ; prefix
+0001954: 27 ; i32.atomic.rmw8_u.sub
+0001955: 00 ; alignment
+0001956: 03 ; memory offset
+0001957: 1a ; drop
+0001958: 0b ; end
+000194d: 0b ; FIXUP func body size
; function body 208
-000195d: 00 ; func body size (guess)
-000195e: 00 ; local decl count
-000195f: 41 ; i32.const
-0001960: 01 ; i32 literal
-0001961: 41 ; i32.const
-0001962: 02 ; i32 literal
-0001963: fe ; prefix
-0001964: 28 ; i32.atomic.rmw16_u.sub
-0001965: 01 ; alignment
-0001966: 03 ; memory offset
-0001967: 1a ; drop
-0001968: 0b ; end
-000195d: 0b ; FIXUP func body size
+0001959: 00 ; func body size (guess)
+000195a: 00 ; local decl count
+000195b: 41 ; i32.const
+000195c: 01 ; i32 literal
+000195d: 41 ; i32.const
+000195e: 02 ; i32 literal
+000195f: fe ; prefix
+0001960: 28 ; i32.atomic.rmw16_u.sub
+0001961: 01 ; alignment
+0001962: 03 ; memory offset
+0001963: 1a ; drop
+0001964: 0b ; end
+0001959: 0b ; FIXUP func body size
; function body 209
-0001969: 00 ; func body size (guess)
-000196a: 00 ; local decl count
-000196b: 41 ; i32.const
-000196c: 01 ; i32 literal
-000196d: 42 ; i64.const
-000196e: 02 ; i64 literal
-000196f: fe ; prefix
-0001970: 29 ; i64.atomic.rmw8_u.sub
-0001971: 00 ; alignment
-0001972: 03 ; memory offset
-0001973: 1a ; drop
-0001974: 0b ; end
-0001969: 0b ; FIXUP func body size
+0001965: 00 ; func body size (guess)
+0001966: 00 ; local decl count
+0001967: 41 ; i32.const
+0001968: 01 ; i32 literal
+0001969: 42 ; i64.const
+000196a: 02 ; i64 literal
+000196b: fe ; prefix
+000196c: 29 ; i64.atomic.rmw8_u.sub
+000196d: 00 ; alignment
+000196e: 03 ; memory offset
+000196f: 1a ; drop
+0001970: 0b ; end
+0001965: 0b ; FIXUP func body size
; function body 210
-0001975: 00 ; func body size (guess)
-0001976: 00 ; local decl count
-0001977: 41 ; i32.const
-0001978: 01 ; i32 literal
-0001979: 42 ; i64.const
-000197a: 02 ; i64 literal
-000197b: fe ; prefix
-000197c: 2a ; i64.atomic.rmw16_u.sub
-000197d: 01 ; alignment
-000197e: 03 ; memory offset
-000197f: 1a ; drop
-0001980: 0b ; end
-0001975: 0b ; FIXUP func body size
+0001971: 00 ; func body size (guess)
+0001972: 00 ; local decl count
+0001973: 41 ; i32.const
+0001974: 01 ; i32 literal
+0001975: 42 ; i64.const
+0001976: 02 ; i64 literal
+0001977: fe ; prefix
+0001978: 2a ; i64.atomic.rmw16_u.sub
+0001979: 01 ; alignment
+000197a: 03 ; memory offset
+000197b: 1a ; drop
+000197c: 0b ; end
+0001971: 0b ; FIXUP func body size
; function body 211
-0001981: 00 ; func body size (guess)
-0001982: 00 ; local decl count
-0001983: 41 ; i32.const
-0001984: 01 ; i32 literal
-0001985: 42 ; i64.const
-0001986: 02 ; i64 literal
-0001987: fe ; prefix
-0001988: 2b ; i64.atomic.rmw32_u.sub
-0001989: 02 ; alignment
-000198a: 03 ; memory offset
-000198b: 1a ; drop
-000198c: 0b ; end
-0001981: 0b ; FIXUP func body size
+000197d: 00 ; func body size (guess)
+000197e: 00 ; local decl count
+000197f: 41 ; i32.const
+0001980: 01 ; i32 literal
+0001981: 42 ; i64.const
+0001982: 02 ; i64 literal
+0001983: fe ; prefix
+0001984: 2b ; i64.atomic.rmw32_u.sub
+0001985: 02 ; alignment
+0001986: 03 ; memory offset
+0001987: 1a ; drop
+0001988: 0b ; end
+000197d: 0b ; FIXUP func body size
; function body 212
-000198d: 00 ; func body size (guess)
-000198e: 00 ; local decl count
-000198f: 41 ; i32.const
-0001990: 01 ; i32 literal
-0001991: 41 ; i32.const
-0001992: 02 ; i32 literal
-0001993: fe ; prefix
-0001994: 2c ; i32.atomic.rmw.and
-0001995: 02 ; alignment
-0001996: 03 ; memory offset
-0001997: 1a ; drop
-0001998: 0b ; end
-000198d: 0b ; FIXUP func body size
+0001989: 00 ; func body size (guess)
+000198a: 00 ; local decl count
+000198b: 41 ; i32.const
+000198c: 01 ; i32 literal
+000198d: 41 ; i32.const
+000198e: 02 ; i32 literal
+000198f: fe ; prefix
+0001990: 2c ; i32.atomic.rmw.and
+0001991: 02 ; alignment
+0001992: 03 ; memory offset
+0001993: 1a ; drop
+0001994: 0b ; end
+0001989: 0b ; FIXUP func body size
; function body 213
-0001999: 00 ; func body size (guess)
-000199a: 00 ; local decl count
-000199b: 41 ; i32.const
-000199c: 01 ; i32 literal
-000199d: 42 ; i64.const
-000199e: 02 ; i64 literal
-000199f: fe ; prefix
-00019a0: 2d ; i64.atomic.rmw.and
-00019a1: 03 ; alignment
-00019a2: 07 ; memory offset
-00019a3: 1a ; drop
-00019a4: 0b ; end
-0001999: 0b ; FIXUP func body size
+0001995: 00 ; func body size (guess)
+0001996: 00 ; local decl count
+0001997: 41 ; i32.const
+0001998: 01 ; i32 literal
+0001999: 42 ; i64.const
+000199a: 02 ; i64 literal
+000199b: fe ; prefix
+000199c: 2d ; i64.atomic.rmw.and
+000199d: 03 ; alignment
+000199e: 07 ; memory offset
+000199f: 1a ; drop
+00019a0: 0b ; end
+0001995: 0b ; FIXUP func body size
; function body 214
-00019a5: 00 ; func body size (guess)
-00019a6: 00 ; local decl count
-00019a7: 41 ; i32.const
-00019a8: 01 ; i32 literal
-00019a9: 41 ; i32.const
-00019aa: 02 ; i32 literal
-00019ab: fe ; prefix
-00019ac: 2e ; i32.atomic.rmw8_u.and
-00019ad: 00 ; alignment
-00019ae: 03 ; memory offset
-00019af: 1a ; drop
-00019b0: 0b ; end
-00019a5: 0b ; FIXUP func body size
+00019a1: 00 ; func body size (guess)
+00019a2: 00 ; local decl count
+00019a3: 41 ; i32.const
+00019a4: 01 ; i32 literal
+00019a5: 41 ; i32.const
+00019a6: 02 ; i32 literal
+00019a7: fe ; prefix
+00019a8: 2e ; i32.atomic.rmw8_u.and
+00019a9: 00 ; alignment
+00019aa: 03 ; memory offset
+00019ab: 1a ; drop
+00019ac: 0b ; end
+00019a1: 0b ; FIXUP func body size
; function body 215
-00019b1: 00 ; func body size (guess)
-00019b2: 00 ; local decl count
-00019b3: 41 ; i32.const
-00019b4: 01 ; i32 literal
-00019b5: 41 ; i32.const
-00019b6: 02 ; i32 literal
-00019b7: fe ; prefix
-00019b8: 2f ; i32.atomic.rmw16_u.and
-00019b9: 01 ; alignment
-00019ba: 03 ; memory offset
-00019bb: 1a ; drop
-00019bc: 0b ; end
-00019b1: 0b ; FIXUP func body size
+00019ad: 00 ; func body size (guess)
+00019ae: 00 ; local decl count
+00019af: 41 ; i32.const
+00019b0: 01 ; i32 literal
+00019b1: 41 ; i32.const
+00019b2: 02 ; i32 literal
+00019b3: fe ; prefix
+00019b4: 2f ; i32.atomic.rmw16_u.and
+00019b5: 01 ; alignment
+00019b6: 03 ; memory offset
+00019b7: 1a ; drop
+00019b8: 0b ; end
+00019ad: 0b ; FIXUP func body size
; function body 216
-00019bd: 00 ; func body size (guess)
-00019be: 00 ; local decl count
-00019bf: 41 ; i32.const
-00019c0: 01 ; i32 literal
-00019c1: 42 ; i64.const
-00019c2: 02 ; i64 literal
-00019c3: fe ; prefix
-00019c4: 30 ; i64.atomic.rmw8_u.and
-00019c5: 00 ; alignment
-00019c6: 03 ; memory offset
-00019c7: 1a ; drop
-00019c8: 0b ; end
-00019bd: 0b ; FIXUP func body size
+00019b9: 00 ; func body size (guess)
+00019ba: 00 ; local decl count
+00019bb: 41 ; i32.const
+00019bc: 01 ; i32 literal
+00019bd: 42 ; i64.const
+00019be: 02 ; i64 literal
+00019bf: fe ; prefix
+00019c0: 30 ; i64.atomic.rmw8_u.and
+00019c1: 00 ; alignment
+00019c2: 03 ; memory offset
+00019c3: 1a ; drop
+00019c4: 0b ; end
+00019b9: 0b ; FIXUP func body size
; function body 217
-00019c9: 00 ; func body size (guess)
-00019ca: 00 ; local decl count
-00019cb: 41 ; i32.const
-00019cc: 01 ; i32 literal
-00019cd: 42 ; i64.const
-00019ce: 02 ; i64 literal
-00019cf: fe ; prefix
-00019d0: 31 ; i64.atomic.rmw16_u.and
-00019d1: 01 ; alignment
-00019d2: 03 ; memory offset
-00019d3: 1a ; drop
-00019d4: 0b ; end
-00019c9: 0b ; FIXUP func body size
+00019c5: 00 ; func body size (guess)
+00019c6: 00 ; local decl count
+00019c7: 41 ; i32.const
+00019c8: 01 ; i32 literal
+00019c9: 42 ; i64.const
+00019ca: 02 ; i64 literal
+00019cb: fe ; prefix
+00019cc: 31 ; i64.atomic.rmw16_u.and
+00019cd: 01 ; alignment
+00019ce: 03 ; memory offset
+00019cf: 1a ; drop
+00019d0: 0b ; end
+00019c5: 0b ; FIXUP func body size
; function body 218
-00019d5: 00 ; func body size (guess)
-00019d6: 00 ; local decl count
-00019d7: 41 ; i32.const
-00019d8: 01 ; i32 literal
-00019d9: 42 ; i64.const
-00019da: 02 ; i64 literal
-00019db: fe ; prefix
-00019dc: 32 ; i64.atomic.rmw32_u.and
-00019dd: 02 ; alignment
-00019de: 03 ; memory offset
-00019df: 1a ; drop
-00019e0: 0b ; end
-00019d5: 0b ; FIXUP func body size
+00019d1: 00 ; func body size (guess)
+00019d2: 00 ; local decl count
+00019d3: 41 ; i32.const
+00019d4: 01 ; i32 literal
+00019d5: 42 ; i64.const
+00019d6: 02 ; i64 literal
+00019d7: fe ; prefix
+00019d8: 32 ; i64.atomic.rmw32_u.and
+00019d9: 02 ; alignment
+00019da: 03 ; memory offset
+00019db: 1a ; drop
+00019dc: 0b ; end
+00019d1: 0b ; FIXUP func body size
; function body 219
-00019e1: 00 ; func body size (guess)
-00019e2: 00 ; local decl count
-00019e3: 41 ; i32.const
-00019e4: 01 ; i32 literal
-00019e5: 41 ; i32.const
-00019e6: 02 ; i32 literal
-00019e7: fe ; prefix
-00019e8: 33 ; i32.atomic.rmw.or
-00019e9: 02 ; alignment
-00019ea: 03 ; memory offset
-00019eb: 1a ; drop
-00019ec: 0b ; end
-00019e1: 0b ; FIXUP func body size
+00019dd: 00 ; func body size (guess)
+00019de: 00 ; local decl count
+00019df: 41 ; i32.const
+00019e0: 01 ; i32 literal
+00019e1: 41 ; i32.const
+00019e2: 02 ; i32 literal
+00019e3: fe ; prefix
+00019e4: 33 ; i32.atomic.rmw.or
+00019e5: 02 ; alignment
+00019e6: 03 ; memory offset
+00019e7: 1a ; drop
+00019e8: 0b ; end
+00019dd: 0b ; FIXUP func body size
; function body 220
-00019ed: 00 ; func body size (guess)
-00019ee: 00 ; local decl count
-00019ef: 41 ; i32.const
-00019f0: 01 ; i32 literal
-00019f1: 42 ; i64.const
-00019f2: 02 ; i64 literal
-00019f3: fe ; prefix
-00019f4: 34 ; i64.atomic.rmw.or
-00019f5: 03 ; alignment
-00019f6: 07 ; memory offset
-00019f7: 1a ; drop
-00019f8: 0b ; end
-00019ed: 0b ; FIXUP func body size
+00019e9: 00 ; func body size (guess)
+00019ea: 00 ; local decl count
+00019eb: 41 ; i32.const
+00019ec: 01 ; i32 literal
+00019ed: 42 ; i64.const
+00019ee: 02 ; i64 literal
+00019ef: fe ; prefix
+00019f0: 34 ; i64.atomic.rmw.or
+00019f1: 03 ; alignment
+00019f2: 07 ; memory offset
+00019f3: 1a ; drop
+00019f4: 0b ; end
+00019e9: 0b ; FIXUP func body size
; function body 221
-00019f9: 00 ; func body size (guess)
-00019fa: 00 ; local decl count
-00019fb: 41 ; i32.const
-00019fc: 01 ; i32 literal
-00019fd: 41 ; i32.const
-00019fe: 02 ; i32 literal
-00019ff: fe ; prefix
-0001a00: 35 ; i32.atomic.rmw8_u.or
-0001a01: 00 ; alignment
-0001a02: 03 ; memory offset
-0001a03: 1a ; drop
-0001a04: 0b ; end
-00019f9: 0b ; FIXUP func body size
+00019f5: 00 ; func body size (guess)
+00019f6: 00 ; local decl count
+00019f7: 41 ; i32.const
+00019f8: 01 ; i32 literal
+00019f9: 41 ; i32.const
+00019fa: 02 ; i32 literal
+00019fb: fe ; prefix
+00019fc: 35 ; i32.atomic.rmw8_u.or
+00019fd: 00 ; alignment
+00019fe: 03 ; memory offset
+00019ff: 1a ; drop
+0001a00: 0b ; end
+00019f5: 0b ; FIXUP func body size
; function body 222
-0001a05: 00 ; func body size (guess)
-0001a06: 00 ; local decl count
-0001a07: 41 ; i32.const
-0001a08: 01 ; i32 literal
-0001a09: 41 ; i32.const
-0001a0a: 02 ; i32 literal
-0001a0b: fe ; prefix
-0001a0c: 36 ; i32.atomic.rmw16_u.or
-0001a0d: 01 ; alignment
-0001a0e: 03 ; memory offset
-0001a0f: 1a ; drop
-0001a10: 0b ; end
-0001a05: 0b ; FIXUP func body size
+0001a01: 00 ; func body size (guess)
+0001a02: 00 ; local decl count
+0001a03: 41 ; i32.const
+0001a04: 01 ; i32 literal
+0001a05: 41 ; i32.const
+0001a06: 02 ; i32 literal
+0001a07: fe ; prefix
+0001a08: 36 ; i32.atomic.rmw16_u.or
+0001a09: 01 ; alignment
+0001a0a: 03 ; memory offset
+0001a0b: 1a ; drop
+0001a0c: 0b ; end
+0001a01: 0b ; FIXUP func body size
; function body 223
-0001a11: 00 ; func body size (guess)
-0001a12: 00 ; local decl count
-0001a13: 41 ; i32.const
-0001a14: 01 ; i32 literal
-0001a15: 42 ; i64.const
-0001a16: 02 ; i64 literal
-0001a17: fe ; prefix
-0001a18: 37 ; i64.atomic.rmw8_u.or
-0001a19: 00 ; alignment
-0001a1a: 03 ; memory offset
-0001a1b: 1a ; drop
-0001a1c: 0b ; end
-0001a11: 0b ; FIXUP func body size
+0001a0d: 00 ; func body size (guess)
+0001a0e: 00 ; local decl count
+0001a0f: 41 ; i32.const
+0001a10: 01 ; i32 literal
+0001a11: 42 ; i64.const
+0001a12: 02 ; i64 literal
+0001a13: fe ; prefix
+0001a14: 37 ; i64.atomic.rmw8_u.or
+0001a15: 00 ; alignment
+0001a16: 03 ; memory offset
+0001a17: 1a ; drop
+0001a18: 0b ; end
+0001a0d: 0b ; FIXUP func body size
; function body 224
-0001a1d: 00 ; func body size (guess)
-0001a1e: 00 ; local decl count
-0001a1f: 41 ; i32.const
-0001a20: 01 ; i32 literal
-0001a21: 42 ; i64.const
-0001a22: 02 ; i64 literal
-0001a23: fe ; prefix
-0001a24: 38 ; i64.atomic.rmw16_u.or
-0001a25: 01 ; alignment
-0001a26: 03 ; memory offset
-0001a27: 1a ; drop
-0001a28: 0b ; end
-0001a1d: 0b ; FIXUP func body size
+0001a19: 00 ; func body size (guess)
+0001a1a: 00 ; local decl count
+0001a1b: 41 ; i32.const
+0001a1c: 01 ; i32 literal
+0001a1d: 42 ; i64.const
+0001a1e: 02 ; i64 literal
+0001a1f: fe ; prefix
+0001a20: 38 ; i64.atomic.rmw16_u.or
+0001a21: 01 ; alignment
+0001a22: 03 ; memory offset
+0001a23: 1a ; drop
+0001a24: 0b ; end
+0001a19: 0b ; FIXUP func body size
; function body 225
-0001a29: 00 ; func body size (guess)
-0001a2a: 00 ; local decl count
-0001a2b: 41 ; i32.const
-0001a2c: 01 ; i32 literal
-0001a2d: 42 ; i64.const
-0001a2e: 02 ; i64 literal
-0001a2f: fe ; prefix
-0001a30: 39 ; i64.atomic.rmw32_u.or
-0001a31: 02 ; alignment
-0001a32: 03 ; memory offset
-0001a33: 1a ; drop
-0001a34: 0b ; end
-0001a29: 0b ; FIXUP func body size
+0001a25: 00 ; func body size (guess)
+0001a26: 00 ; local decl count
+0001a27: 41 ; i32.const
+0001a28: 01 ; i32 literal
+0001a29: 42 ; i64.const
+0001a2a: 02 ; i64 literal
+0001a2b: fe ; prefix
+0001a2c: 39 ; i64.atomic.rmw32_u.or
+0001a2d: 02 ; alignment
+0001a2e: 03 ; memory offset
+0001a2f: 1a ; drop
+0001a30: 0b ; end
+0001a25: 0b ; FIXUP func body size
; function body 226
-0001a35: 00 ; func body size (guess)
-0001a36: 00 ; local decl count
-0001a37: 41 ; i32.const
-0001a38: 01 ; i32 literal
-0001a39: 41 ; i32.const
-0001a3a: 02 ; i32 literal
-0001a3b: fe ; prefix
-0001a3c: 3a ; i32.atomic.rmw.xor
-0001a3d: 02 ; alignment
-0001a3e: 03 ; memory offset
-0001a3f: 1a ; drop
-0001a40: 0b ; end
-0001a35: 0b ; FIXUP func body size
+0001a31: 00 ; func body size (guess)
+0001a32: 00 ; local decl count
+0001a33: 41 ; i32.const
+0001a34: 01 ; i32 literal
+0001a35: 41 ; i32.const
+0001a36: 02 ; i32 literal
+0001a37: fe ; prefix
+0001a38: 3a ; i32.atomic.rmw.xor
+0001a39: 02 ; alignment
+0001a3a: 03 ; memory offset
+0001a3b: 1a ; drop
+0001a3c: 0b ; end
+0001a31: 0b ; FIXUP func body size
; function body 227
-0001a41: 00 ; func body size (guess)
-0001a42: 00 ; local decl count
-0001a43: 41 ; i32.const
-0001a44: 01 ; i32 literal
-0001a45: 42 ; i64.const
-0001a46: 02 ; i64 literal
-0001a47: fe ; prefix
-0001a48: 3b ; i64.atomic.rmw.xor
-0001a49: 03 ; alignment
-0001a4a: 07 ; memory offset
-0001a4b: 1a ; drop
-0001a4c: 0b ; end
-0001a41: 0b ; FIXUP func body size
+0001a3d: 00 ; func body size (guess)
+0001a3e: 00 ; local decl count
+0001a3f: 41 ; i32.const
+0001a40: 01 ; i32 literal
+0001a41: 42 ; i64.const
+0001a42: 02 ; i64 literal
+0001a43: fe ; prefix
+0001a44: 3b ; i64.atomic.rmw.xor
+0001a45: 03 ; alignment
+0001a46: 07 ; memory offset
+0001a47: 1a ; drop
+0001a48: 0b ; end
+0001a3d: 0b ; FIXUP func body size
; function body 228
-0001a4d: 00 ; func body size (guess)
-0001a4e: 00 ; local decl count
-0001a4f: 41 ; i32.const
-0001a50: 01 ; i32 literal
-0001a51: 41 ; i32.const
-0001a52: 02 ; i32 literal
-0001a53: fe ; prefix
-0001a54: 3c ; i32.atomic.rmw8_u.xor
-0001a55: 00 ; alignment
-0001a56: 03 ; memory offset
-0001a57: 1a ; drop
-0001a58: 0b ; end
-0001a4d: 0b ; FIXUP func body size
+0001a49: 00 ; func body size (guess)
+0001a4a: 00 ; local decl count
+0001a4b: 41 ; i32.const
+0001a4c: 01 ; i32 literal
+0001a4d: 41 ; i32.const
+0001a4e: 02 ; i32 literal
+0001a4f: fe ; prefix
+0001a50: 3c ; i32.atomic.rmw8_u.xor
+0001a51: 00 ; alignment
+0001a52: 03 ; memory offset
+0001a53: 1a ; drop
+0001a54: 0b ; end
+0001a49: 0b ; FIXUP func body size
; function body 229
-0001a59: 00 ; func body size (guess)
-0001a5a: 00 ; local decl count
-0001a5b: 41 ; i32.const
-0001a5c: 01 ; i32 literal
-0001a5d: 41 ; i32.const
-0001a5e: 02 ; i32 literal
-0001a5f: fe ; prefix
-0001a60: 3d ; i32.atomic.rmw16_u.xor
-0001a61: 01 ; alignment
-0001a62: 03 ; memory offset
-0001a63: 1a ; drop
-0001a64: 0b ; end
-0001a59: 0b ; FIXUP func body size
+0001a55: 00 ; func body size (guess)
+0001a56: 00 ; local decl count
+0001a57: 41 ; i32.const
+0001a58: 01 ; i32 literal
+0001a59: 41 ; i32.const
+0001a5a: 02 ; i32 literal
+0001a5b: fe ; prefix
+0001a5c: 3d ; i32.atomic.rmw16_u.xor
+0001a5d: 01 ; alignment
+0001a5e: 03 ; memory offset
+0001a5f: 1a ; drop
+0001a60: 0b ; end
+0001a55: 0b ; FIXUP func body size
; function body 230
-0001a65: 00 ; func body size (guess)
-0001a66: 00 ; local decl count
-0001a67: 41 ; i32.const
-0001a68: 01 ; i32 literal
-0001a69: 42 ; i64.const
-0001a6a: 02 ; i64 literal
-0001a6b: fe ; prefix
-0001a6c: 3e ; i64.atomic.rmw8_u.xor
-0001a6d: 00 ; alignment
-0001a6e: 03 ; memory offset
-0001a6f: 1a ; drop
-0001a70: 0b ; end
-0001a65: 0b ; FIXUP func body size
+0001a61: 00 ; func body size (guess)
+0001a62: 00 ; local decl count
+0001a63: 41 ; i32.const
+0001a64: 01 ; i32 literal
+0001a65: 42 ; i64.const
+0001a66: 02 ; i64 literal
+0001a67: fe ; prefix
+0001a68: 3e ; i64.atomic.rmw8_u.xor
+0001a69: 00 ; alignment
+0001a6a: 03 ; memory offset
+0001a6b: 1a ; drop
+0001a6c: 0b ; end
+0001a61: 0b ; FIXUP func body size
; function body 231
-0001a71: 00 ; func body size (guess)
-0001a72: 00 ; local decl count
-0001a73: 41 ; i32.const
-0001a74: 01 ; i32 literal
-0001a75: 42 ; i64.const
-0001a76: 02 ; i64 literal
-0001a77: fe ; prefix
-0001a78: 3f ; i64.atomic.rmw16_u.xor
-0001a79: 01 ; alignment
-0001a7a: 03 ; memory offset
-0001a7b: 1a ; drop
-0001a7c: 0b ; end
-0001a71: 0b ; FIXUP func body size
+0001a6d: 00 ; func body size (guess)
+0001a6e: 00 ; local decl count
+0001a6f: 41 ; i32.const
+0001a70: 01 ; i32 literal
+0001a71: 42 ; i64.const
+0001a72: 02 ; i64 literal
+0001a73: fe ; prefix
+0001a74: 3f ; i64.atomic.rmw16_u.xor
+0001a75: 01 ; alignment
+0001a76: 03 ; memory offset
+0001a77: 1a ; drop
+0001a78: 0b ; end
+0001a6d: 0b ; FIXUP func body size
; function body 232
-0001a7d: 00 ; func body size (guess)
-0001a7e: 00 ; local decl count
-0001a7f: 41 ; i32.const
-0001a80: 01 ; i32 literal
-0001a81: 42 ; i64.const
-0001a82: 02 ; i64 literal
-0001a83: fe ; prefix
-0001a84: 40 ; i64.atomic.rmw32_u.xor
-0001a85: 02 ; alignment
-0001a86: 03 ; memory offset
-0001a87: 1a ; drop
-0001a88: 0b ; end
-0001a7d: 0b ; FIXUP func body size
+0001a79: 00 ; func body size (guess)
+0001a7a: 00 ; local decl count
+0001a7b: 41 ; i32.const
+0001a7c: 01 ; i32 literal
+0001a7d: 42 ; i64.const
+0001a7e: 02 ; i64 literal
+0001a7f: fe ; prefix
+0001a80: 40 ; i64.atomic.rmw32_u.xor
+0001a81: 02 ; alignment
+0001a82: 03 ; memory offset
+0001a83: 1a ; drop
+0001a84: 0b ; end
+0001a79: 0b ; FIXUP func body size
; function body 233
-0001a89: 00 ; func body size (guess)
-0001a8a: 00 ; local decl count
-0001a8b: 41 ; i32.const
-0001a8c: 01 ; i32 literal
-0001a8d: 41 ; i32.const
-0001a8e: 02 ; i32 literal
-0001a8f: fe ; prefix
-0001a90: 41 ; i32.atomic.rmw.xchg
-0001a91: 02 ; alignment
-0001a92: 03 ; memory offset
-0001a93: 1a ; drop
-0001a94: 0b ; end
-0001a89: 0b ; FIXUP func body size
+0001a85: 00 ; func body size (guess)
+0001a86: 00 ; local decl count
+0001a87: 41 ; i32.const
+0001a88: 01 ; i32 literal
+0001a89: 41 ; i32.const
+0001a8a: 02 ; i32 literal
+0001a8b: fe ; prefix
+0001a8c: 41 ; i32.atomic.rmw.xchg
+0001a8d: 02 ; alignment
+0001a8e: 03 ; memory offset
+0001a8f: 1a ; drop
+0001a90: 0b ; end
+0001a85: 0b ; FIXUP func body size
; function body 234
-0001a95: 00 ; func body size (guess)
-0001a96: 00 ; local decl count
-0001a97: 41 ; i32.const
-0001a98: 01 ; i32 literal
-0001a99: 42 ; i64.const
-0001a9a: 02 ; i64 literal
-0001a9b: fe ; prefix
-0001a9c: 42 ; i64.atomic.rmw.xchg
-0001a9d: 03 ; alignment
-0001a9e: 07 ; memory offset
-0001a9f: 1a ; drop
-0001aa0: 0b ; end
-0001a95: 0b ; FIXUP func body size
+0001a91: 00 ; func body size (guess)
+0001a92: 00 ; local decl count
+0001a93: 41 ; i32.const
+0001a94: 01 ; i32 literal
+0001a95: 42 ; i64.const
+0001a96: 02 ; i64 literal
+0001a97: fe ; prefix
+0001a98: 42 ; i64.atomic.rmw.xchg
+0001a99: 03 ; alignment
+0001a9a: 07 ; memory offset
+0001a9b: 1a ; drop
+0001a9c: 0b ; end
+0001a91: 0b ; FIXUP func body size
; function body 235
-0001aa1: 00 ; func body size (guess)
-0001aa2: 00 ; local decl count
-0001aa3: 41 ; i32.const
-0001aa4: 01 ; i32 literal
-0001aa5: 41 ; i32.const
-0001aa6: 02 ; i32 literal
-0001aa7: fe ; prefix
-0001aa8: 43 ; i32.atomic.rmw8_u.xchg
-0001aa9: 00 ; alignment
-0001aaa: 03 ; memory offset
-0001aab: 1a ; drop
-0001aac: 0b ; end
-0001aa1: 0b ; FIXUP func body size
+0001a9d: 00 ; func body size (guess)
+0001a9e: 00 ; local decl count
+0001a9f: 41 ; i32.const
+0001aa0: 01 ; i32 literal
+0001aa1: 41 ; i32.const
+0001aa2: 02 ; i32 literal
+0001aa3: fe ; prefix
+0001aa4: 43 ; i32.atomic.rmw8_u.xchg
+0001aa5: 00 ; alignment
+0001aa6: 03 ; memory offset
+0001aa7: 1a ; drop
+0001aa8: 0b ; end
+0001a9d: 0b ; FIXUP func body size
; function body 236
-0001aad: 00 ; func body size (guess)
-0001aae: 00 ; local decl count
-0001aaf: 41 ; i32.const
-0001ab0: 01 ; i32 literal
-0001ab1: 41 ; i32.const
-0001ab2: 02 ; i32 literal
-0001ab3: fe ; prefix
-0001ab4: 44 ; i32.atomic.rmw16_u.xchg
-0001ab5: 01 ; alignment
-0001ab6: 03 ; memory offset
-0001ab7: 1a ; drop
-0001ab8: 0b ; end
-0001aad: 0b ; FIXUP func body size
+0001aa9: 00 ; func body size (guess)
+0001aaa: 00 ; local decl count
+0001aab: 41 ; i32.const
+0001aac: 01 ; i32 literal
+0001aad: 41 ; i32.const
+0001aae: 02 ; i32 literal
+0001aaf: fe ; prefix
+0001ab0: 44 ; i32.atomic.rmw16_u.xchg
+0001ab1: 01 ; alignment
+0001ab2: 03 ; memory offset
+0001ab3: 1a ; drop
+0001ab4: 0b ; end
+0001aa9: 0b ; FIXUP func body size
; function body 237
-0001ab9: 00 ; func body size (guess)
-0001aba: 00 ; local decl count
-0001abb: 41 ; i32.const
-0001abc: 01 ; i32 literal
-0001abd: 42 ; i64.const
-0001abe: 02 ; i64 literal
-0001abf: fe ; prefix
-0001ac0: 45 ; i64.atomic.rmw8_u.xchg
-0001ac1: 00 ; alignment
-0001ac2: 03 ; memory offset
-0001ac3: 1a ; drop
-0001ac4: 0b ; end
-0001ab9: 0b ; FIXUP func body size
+0001ab5: 00 ; func body size (guess)
+0001ab6: 00 ; local decl count
+0001ab7: 41 ; i32.const
+0001ab8: 01 ; i32 literal
+0001ab9: 42 ; i64.const
+0001aba: 02 ; i64 literal
+0001abb: fe ; prefix
+0001abc: 45 ; i64.atomic.rmw8_u.xchg
+0001abd: 00 ; alignment
+0001abe: 03 ; memory offset
+0001abf: 1a ; drop
+0001ac0: 0b ; end
+0001ab5: 0b ; FIXUP func body size
; function body 238
-0001ac5: 00 ; func body size (guess)
-0001ac6: 00 ; local decl count
-0001ac7: 41 ; i32.const
-0001ac8: 01 ; i32 literal
-0001ac9: 42 ; i64.const
-0001aca: 02 ; i64 literal
-0001acb: fe ; prefix
-0001acc: 46 ; i64.atomic.rmw16_u.xchg
-0001acd: 01 ; alignment
-0001ace: 03 ; memory offset
-0001acf: 1a ; drop
-0001ad0: 0b ; end
-0001ac5: 0b ; FIXUP func body size
+0001ac1: 00 ; func body size (guess)
+0001ac2: 00 ; local decl count
+0001ac3: 41 ; i32.const
+0001ac4: 01 ; i32 literal
+0001ac5: 42 ; i64.const
+0001ac6: 02 ; i64 literal
+0001ac7: fe ; prefix
+0001ac8: 46 ; i64.atomic.rmw16_u.xchg
+0001ac9: 01 ; alignment
+0001aca: 03 ; memory offset
+0001acb: 1a ; drop
+0001acc: 0b ; end
+0001ac1: 0b ; FIXUP func body size
; function body 239
-0001ad1: 00 ; func body size (guess)
-0001ad2: 00 ; local decl count
-0001ad3: 41 ; i32.const
-0001ad4: 01 ; i32 literal
-0001ad5: 42 ; i64.const
-0001ad6: 02 ; i64 literal
-0001ad7: fe ; prefix
-0001ad8: 47 ; i64.atomic.rmw32_u.xchg
-0001ad9: 02 ; alignment
-0001ada: 03 ; memory offset
-0001adb: 1a ; drop
-0001adc: 0b ; end
-0001ad1: 0b ; FIXUP func body size
+0001acd: 00 ; func body size (guess)
+0001ace: 00 ; local decl count
+0001acf: 41 ; i32.const
+0001ad0: 01 ; i32 literal
+0001ad1: 42 ; i64.const
+0001ad2: 02 ; i64 literal
+0001ad3: fe ; prefix
+0001ad4: 47 ; i64.atomic.rmw32_u.xchg
+0001ad5: 02 ; alignment
+0001ad6: 03 ; memory offset
+0001ad7: 1a ; drop
+0001ad8: 0b ; end
+0001acd: 0b ; FIXUP func body size
; function body 240
-0001add: 00 ; func body size (guess)
-0001ade: 00 ; local decl count
+0001ad9: 00 ; func body size (guess)
+0001ada: 00 ; local decl count
+0001adb: 41 ; i32.const
+0001adc: 01 ; i32 literal
+0001add: 41 ; i32.const
+0001ade: 02 ; i32 literal
0001adf: 41 ; i32.const
-0001ae0: 01 ; i32 literal
-0001ae1: 41 ; i32.const
-0001ae2: 02 ; i32 literal
-0001ae3: 41 ; i32.const
-0001ae4: 03 ; i32 literal
-0001ae5: fe ; prefix
-0001ae6: 48 ; i32.atomic.rmw.cmpxchg
-0001ae7: 02 ; alignment
-0001ae8: 03 ; memory offset
-0001ae9: 1a ; drop
-0001aea: 0b ; end
-0001add: 0d ; FIXUP func body size
+0001ae0: 03 ; i32 literal
+0001ae1: fe ; prefix
+0001ae2: 48 ; i32.atomic.rmw.cmpxchg
+0001ae3: 02 ; alignment
+0001ae4: 03 ; memory offset
+0001ae5: 1a ; drop
+0001ae6: 0b ; end
+0001ad9: 0d ; FIXUP func body size
; function body 241
-0001aeb: 00 ; func body size (guess)
-0001aec: 00 ; local decl count
-0001aed: 41 ; i32.const
-0001aee: 01 ; i32 literal
-0001aef: 42 ; i64.const
-0001af0: 02 ; i64 literal
-0001af1: 42 ; i64.const
-0001af2: 03 ; i64 literal
-0001af3: fe ; prefix
-0001af4: 49 ; i64.atomic.rmw.cmpxchg
-0001af5: 03 ; alignment
-0001af6: 07 ; memory offset
-0001af7: 1a ; drop
-0001af8: 0b ; end
-0001aeb: 0d ; FIXUP func body size
+0001ae7: 00 ; func body size (guess)
+0001ae8: 00 ; local decl count
+0001ae9: 41 ; i32.const
+0001aea: 01 ; i32 literal
+0001aeb: 42 ; i64.const
+0001aec: 02 ; i64 literal
+0001aed: 42 ; i64.const
+0001aee: 03 ; i64 literal
+0001aef: fe ; prefix
+0001af0: 49 ; i64.atomic.rmw.cmpxchg
+0001af1: 03 ; alignment
+0001af2: 07 ; memory offset
+0001af3: 1a ; drop
+0001af4: 0b ; end
+0001ae7: 0d ; FIXUP func body size
; function body 242
-0001af9: 00 ; func body size (guess)
-0001afa: 00 ; local decl count
+0001af5: 00 ; func body size (guess)
+0001af6: 00 ; local decl count
+0001af7: 41 ; i32.const
+0001af8: 01 ; i32 literal
+0001af9: 41 ; i32.const
+0001afa: 02 ; i32 literal
0001afb: 41 ; i32.const
-0001afc: 01 ; i32 literal
-0001afd: 41 ; i32.const
-0001afe: 02 ; i32 literal
-0001aff: 41 ; i32.const
-0001b00: 03 ; i32 literal
-0001b01: fe ; prefix
-0001b02: 4a ; i32.atomic.rmw8_u.cmpxchg
-0001b03: 00 ; alignment
-0001b04: 03 ; memory offset
-0001b05: 1a ; drop
-0001b06: 0b ; end
-0001af9: 0d ; FIXUP func body size
+0001afc: 03 ; i32 literal
+0001afd: fe ; prefix
+0001afe: 4a ; i32.atomic.rmw8_u.cmpxchg
+0001aff: 00 ; alignment
+0001b00: 03 ; memory offset
+0001b01: 1a ; drop
+0001b02: 0b ; end
+0001af5: 0d ; FIXUP func body size
; function body 243
-0001b07: 00 ; func body size (guess)
-0001b08: 00 ; local decl count
+0001b03: 00 ; func body size (guess)
+0001b04: 00 ; local decl count
+0001b05: 41 ; i32.const
+0001b06: 01 ; i32 literal
+0001b07: 41 ; i32.const
+0001b08: 02 ; i32 literal
0001b09: 41 ; i32.const
-0001b0a: 01 ; i32 literal
-0001b0b: 41 ; i32.const
-0001b0c: 02 ; i32 literal
-0001b0d: 41 ; i32.const
-0001b0e: 03 ; i32 literal
-0001b0f: fe ; prefix
-0001b10: 4b ; i32.atomic.rmw16_u.cmpxchg
-0001b11: 01 ; alignment
-0001b12: 03 ; memory offset
-0001b13: 1a ; drop
-0001b14: 0b ; end
-0001b07: 0d ; FIXUP func body size
+0001b0a: 03 ; i32 literal
+0001b0b: fe ; prefix
+0001b0c: 4b ; i32.atomic.rmw16_u.cmpxchg
+0001b0d: 01 ; alignment
+0001b0e: 03 ; memory offset
+0001b0f: 1a ; drop
+0001b10: 0b ; end
+0001b03: 0d ; FIXUP func body size
; function body 244
-0001b15: 00 ; func body size (guess)
-0001b16: 00 ; local decl count
-0001b17: 41 ; i32.const
-0001b18: 01 ; i32 literal
-0001b19: 42 ; i64.const
-0001b1a: 02 ; i64 literal
-0001b1b: 42 ; i64.const
-0001b1c: 03 ; i64 literal
-0001b1d: fe ; prefix
-0001b1e: 4c ; i64.atomic.rmw8_u.cmpxchg
-0001b1f: 00 ; alignment
-0001b20: 03 ; memory offset
-0001b21: 1a ; drop
-0001b22: 0b ; end
-0001b15: 0d ; FIXUP func body size
+0001b11: 00 ; func body size (guess)
+0001b12: 00 ; local decl count
+0001b13: 41 ; i32.const
+0001b14: 01 ; i32 literal
+0001b15: 42 ; i64.const
+0001b16: 02 ; i64 literal
+0001b17: 42 ; i64.const
+0001b18: 03 ; i64 literal
+0001b19: fe ; prefix
+0001b1a: 4c ; i64.atomic.rmw8_u.cmpxchg
+0001b1b: 00 ; alignment
+0001b1c: 03 ; memory offset
+0001b1d: 1a ; drop
+0001b1e: 0b ; end
+0001b11: 0d ; FIXUP func body size
; function body 245
-0001b23: 00 ; func body size (guess)
-0001b24: 00 ; local decl count
-0001b25: 41 ; i32.const
-0001b26: 01 ; i32 literal
-0001b27: 42 ; i64.const
-0001b28: 02 ; i64 literal
-0001b29: 42 ; i64.const
-0001b2a: 03 ; i64 literal
-0001b2b: fe ; prefix
-0001b2c: 4d ; i64.atomic.rmw16_u.cmpxchg
-0001b2d: 01 ; alignment
-0001b2e: 03 ; memory offset
-0001b2f: 1a ; drop
-0001b30: 0b ; end
-0001b23: 0d ; FIXUP func body size
+0001b1f: 00 ; func body size (guess)
+0001b20: 00 ; local decl count
+0001b21: 41 ; i32.const
+0001b22: 01 ; i32 literal
+0001b23: 42 ; i64.const
+0001b24: 02 ; i64 literal
+0001b25: 42 ; i64.const
+0001b26: 03 ; i64 literal
+0001b27: fe ; prefix
+0001b28: 4d ; i64.atomic.rmw16_u.cmpxchg
+0001b29: 01 ; alignment
+0001b2a: 03 ; memory offset
+0001b2b: 1a ; drop
+0001b2c: 0b ; end
+0001b1f: 0d ; FIXUP func body size
; function body 246
-0001b31: 00 ; func body size (guess)
-0001b32: 00 ; local decl count
-0001b33: 41 ; i32.const
-0001b34: 01 ; i32 literal
-0001b35: 42 ; i64.const
-0001b36: 02 ; i64 literal
-0001b37: 42 ; i64.const
-0001b38: 03 ; i64 literal
-0001b39: fe ; prefix
-0001b3a: 4e ; i64.atomic.rmw32_u.cmpxchg
-0001b3b: 02 ; alignment
-0001b3c: 03 ; memory offset
-0001b3d: 1a ; drop
-0001b3e: 0b ; end
-0001b31: 0d ; FIXUP func body size
-; move data: [10b2, 1b3f) -> [10b3, 1b40)
-00010b1: 8d15 ; FIXUP section size
+0001b2d: 00 ; func body size (guess)
+0001b2e: 00 ; local decl count
+0001b2f: 41 ; i32.const
+0001b30: 01 ; i32 literal
+0001b31: 42 ; i64.const
+0001b32: 02 ; i64 literal
+0001b33: 42 ; i64.const
+0001b34: 03 ; i64 literal
+0001b35: fe ; prefix
+0001b36: 4e ; i64.atomic.rmw32_u.cmpxchg
+0001b37: 02 ; alignment
+0001b38: 03 ; memory offset
+0001b39: 1a ; drop
+0001b3a: 0b ; end
+0001b2d: 0d ; FIXUP func body size
+; move data: [10ae, 1b3b) -> [10af, 1b3c)
+00010ad: 8d15 ; FIXUP section size
BeginModule(version: 1)
BeginTypeSection(8)
OnTypeCount(2)
OnType(index: 0, params: [], results: [])
OnType(index: 1, params: [i32], results: [])
EndTypeSection
- BeginImportSection(18)
+ BeginImportSection(14)
OnImportCount(1)
- OnImport(index: 0, module: "spectest", field: "print")
+ OnImport(index: 0, module: "host", field: "print")
OnImportFunc(import_index: 0, func_index: 0, sig_index: 1)
EndImportSection
BeginFunctionSection(249)
@@ -7836,7 +7836,7 @@ i64.extend16_s() =>
i64.extend32_s() =>
alloca() =>
br_unless() =>
-called host spectest.print(i32:1) =>
+called host host.print(i32:1) =>
call_host() =>
data() =>
drop_keep() =>
diff --git a/test/interp/tracing-all-opcodes.txt b/test/interp/tracing-all-opcodes.txt
index eb02b307..1ec50ace 100644
--- a/test/interp/tracing-all-opcodes.txt
+++ b/test/interp/tracing-all-opcodes.txt
@@ -1,8 +1,8 @@
;;; TOOL: run-interp
-;;; FLAGS: --trace --enable-threads --enable-saturating-float-to-int
+;;; FLAGS: --trace --host-print --enable-threads --enable-saturating-float-to-int
(module
- (import "spectest" "print" (func $print (param i32)))
+ (import "host" "print" (func $print (param i32)))
(type $empty (func))
(func $empty)
@@ -1377,7 +1377,7 @@ br_unless() =>
>>> running export "call_host":
#0. 2466: V:0 | i32.const $1
#0. 2471: V:1 | call_host $0
-called host spectest.print(i32:1) =>
+called host host.print(i32:1) =>
#0. 2476: V:0 | return
call_host() =>
>>> running export "drop_keep":
diff --git a/test/run-interp.py b/test/run-interp.py
index 664a6d87..b40c7c10 100755
--- a/test/run-interp.py
+++ b/test/run-interp.py
@@ -44,6 +44,7 @@ def main(args):
help='print the commands that are run.',
action='store_true')
parser.add_argument('--run-all-exports', action='store_true')
+ parser.add_argument('--host-print', action='store_true')
parser.add_argument('--spec', action='store_true')
parser.add_argument('-t', '--trace', action='store_true')
parser.add_argument('file', help='test file.')
@@ -52,14 +53,25 @@ def main(args):
options = parser.parse_args(args)
wast_tool = None
+ interp_tool = None
if options.spec:
wast_tool = utils.Executable(
find_exe.GetWast2JsonExecutable(options.bindir),
error_cmdline=options.error_cmdline)
+ interp_tool = utils.Executable(
+ find_exe.GetSpectestInterpExecutable(options.bindir),
+ error_cmdline=options.error_cmdline)
else:
wast_tool = utils.Executable(
find_exe.GetWat2WasmExecutable(options.bindir),
error_cmdline=options.error_cmdline)
+ interp_tool = utils.Executable(
+ find_exe.GetWasmInterpExecutable(options.bindir),
+ error_cmdline=options.error_cmdline)
+ interp_tool.AppendOptionalArgs({
+ '--host-print': options.host_print,
+ '--run-all-exports': options.run_all_exports,
+ })
wast_tool.AppendOptionalArgs({
'-v': options.verbose,
@@ -68,13 +80,9 @@ def main(args):
'--enable-threads': options.enable_threads,
})
- wasm_interp = utils.Executable(
- find_exe.GetWasmInterpExecutable(options.bindir),
- error_cmdline=options.error_cmdline)
- wasm_interp.AppendOptionalArgs({
+ interp_tool.AppendOptionalArgs({
'-v': options.verbose,
'--run-all-exports': options.run_all_exports,
- '--spec': options.spec,
'--trace': options.trace,
'--enable-saturating-float-to-int':
options.enable_saturating_float_to_int,
@@ -82,13 +90,13 @@ def main(args):
})
wast_tool.verbose = options.print_cmd
- wasm_interp.verbose = options.print_cmd
+ interp_tool.verbose = options.print_cmd
with utils.TempDirectory(options.out_dir, 'run-interp-') as out_dir:
new_ext = '.json' if options.spec else '.wasm'
out_file = utils.ChangeDir(utils.ChangeExt(options.file, new_ext), out_dir)
wast_tool.RunWithArgs(options.file, '-o', out_file)
- wasm_interp.RunWithArgs(out_file)
+ interp_tool.RunWithArgs(out_file)
return 0
diff --git a/test/run-wasm-link.py b/test/run-wasm-link.py
index 6fb24b1b..7470c2c3 100755
--- a/test/run-wasm-link.py
+++ b/test/run-wasm-link.py
@@ -73,13 +73,14 @@ def main(args):
find_exe.GetWasmdumpExecutable(options.bindir),
error_cmdline=options.error_cmdline)
- wasm_interp = utils.Executable(find_exe.GetWasmInterpExecutable(
- options.bindir), error_cmdline=options.error_cmdline)
+ spectest_interp = utils.Executable(
+ find_exe.GetSpectestInterpExecutable(options.bindir),
+ error_cmdline=options.error_cmdline)
wast2json.verbose = options.print_cmd
wasm_link.verbose = options.print_cmd
wasm_objdump.verbose = options.print_cmd
- wasm_interp.verbose = options.print_cmd
+ spectest_interp.verbose = options.print_cmd
filename = options.file
@@ -123,7 +124,7 @@ def main(args):
with open(out_file, 'wb') as json_file:
json.dump(spec, json_file, indent=4)
- wasm_interp.RunWithArgs('--spec', out_file)
+ spectest_interp.RunWithArgs(out_file)
if __name__ == '__main__':